diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-11-03 20:17:38 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-11-03 20:17:38 +0000 |
commit | 2b2b3bd8d96c3193c8d9bc606ee1b5b3c9b47000 (patch) | |
tree | 81e969bd3646dc338eed81f44730a7c467aebe3b | |
parent | d4f000ef87b18faf42726f23e17b15a8f14fe618 (diff) | |
download | gcc-2b2b3bd8d96c3193c8d9bc606ee1b5b3c9b47000.tar.gz |
2008-11-03 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk r141555
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@141561 138bc75d-0d04-0410-961f-82ee72b054a4
113 files changed, 5786 insertions, 2472 deletions
diff --git a/ChangeLog b/ChangeLog index c06b85ec031..3f69e94d7b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-10-31 Mikael Morin <mikael.morin@tele2.fr> + + * MAINTAINERS (Write after approval): Add myself. + +2008-10-31 Ben Elliston <bje@au.ibm.com> + + * configure.ac (spu-*-*): Remove special case. + * configure: Regenerate. + 2008-10-30 Catherine Moore <clm@codesourcery.com> * MAINTAINERS (Write after approval): Update my email address. diff --git a/ChangeLog.melt b/ChangeLog.melt index 761415e6415..586f23bac09 100644 --- a/ChangeLog.melt +++ b/ChangeLog.melt @@ -1,3 +1,6 @@ +2008-11-03 Basile Starynkevitch <basile@starynkevitch.net> + MELT branch merged with trunk r141555 + 2008-10-31 Basile Starynkevitch <basile@starynkevitch.net> MELT branch merged with trunk r141467 diff --git a/MAINTAINERS b/MAINTAINERS index 0ceb8d7b26b..e86560335bf 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -391,6 +391,7 @@ Lee Millward lee.millward@gmail.com Alan Modra amodra@bigpond.net.au Alexander Monakov amonakov@ispras.ru Catherine Moore clm@codesourcery.com +Mikael Morin mikael.morin@tele2.fr James A. Morrison phython@gcc.gnu.org Dirk Mueller dmueller@suse.de Adam Nemet anemet@caviumnetworks.com @@ -420,6 +421,7 @@ Maciej W. Rozycki macro@linux-mips.org Douglas Rupp rupp@gnat.com Silvius Rus rus@google.com Matthew Sachs msachs@apple.com +Duncan Sands baldrick@gcc.gnu.org Dodji Seketeli dseketel@redhat.com Svein Seldal svein@dev.seldal.com Thiemo Seufer ths@networkno.de diff --git a/configure b/configure index 591a6f3195d..82241081ede 100755 --- a/configure +++ b/configure @@ -2655,8 +2655,6 @@ case "${target}" in ;; sparc-*-solaris* | sparc64-*-solaris* | sparcv9-*-solaris*) ;; - spu-*-*) - ;; v810-*-*) noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld target-libstdc++-v3 opcodes target-libgloss ${libgcj}" ;; diff --git a/configure.ac b/configure.ac index 77b32516f03..1ee5158f00b 100644 --- a/configure.ac +++ b/configure.ac @@ -891,8 +891,6 @@ case "${target}" in ;; sparc-*-solaris* | sparc64-*-solaris* | sparcv9-*-solaris*) ;; - spu-*-*) - ;; v810-*-*) noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld target-libstdc++-v3 opcodes target-libgloss ${libgcj}" ;; diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b7b85230ae3..0cd01eeb05a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,146 @@ +2008-11-03 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + PR other/37463 + * configure.ac (gcc_cv_ld_ro_rw_mix): Move before + gcc_cv_as_cfi_directive. + (gcc_cv_as_cfi_directive) [*-*-solaris*]: Check if linker supports + merging read-only and read-write sections or assembler emits + read-write .eh_frame sections. + * configure: Regenerate. + +2008-11-03 Nathan Froyd <froydnj@codesourcery.com> + + Revert: + 2008-10-31 Nathan Froyd <froydnj@codesourcery.com> + + * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence + problem. + (rs6000_emit_prologue): Invert logic. + * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit + (reg:P 11) instead of match_operand. + (*save_fpregs_<mode>): Likewise. + (*restore_gpregs_<mode>): Likewise. + (*return_and_restore_gpregs_<mode>): Likewise. + (*return_and_restore_fpregs_<mode>): Likewise. + * config/rs6000/spe.md (*save_gpregs_spe): Use explicit + (reg:P 11) insted of match_operand. + (*restore_gpregs_spe): Likewise. + (*return_and_restore_gpregs_spe): Likewise. + +2008-11-03 Harsha Jagasia <harsha.jagasia@amd.com> + + PR tree-optimization/37684 + * gcc.dg/graphite/pr37684.c: New. + * graphite.c (exclude_component_ref): New. + (is_simple_operand): Call exclude_component_ref. + +2008-11-03 Sebastian Pop <sebastian.pop@amd.com> + + PR tree-optimization/36908 + * testsuite/gcc.dg/tree-ssa/pr36908.c: New. + * tree-loop-distribution.c (number_of_rw_in_rdg): New. + (number_of_rw_in_partition): New. + (partition_contains_all_rw): New. + (ldist_gen): Do not distribute when one of the partitions + contains all the memory operations. + +2008-11-03 Sebastian Pop <sebastian.pop@amd.com> + + * cfghooks.c (split_block): Set BB_IRREDUCIBLE_LOOP and + EDGE_IRREDUCIBLE_LOOP. + +2008-11-03 Bernd Schmidt <bernd.schmidt@analog.com> + + * config/bfin/bfin.c (bfin_optimize_loop): Properly handle case + where we have one entry point in the loop which isn't the head. + +2008-11-03 Richard Guenther <rguenther@suse.de> + + PR middle-end/37573 + * tree-data-ref.c (split_constant_offset_1): Fix tuplification. + +2008-11-03 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/37858 + * passes.c (execute_one_pass): Don't look at cfun->curr_properties + for ipa and simple ipa passes. + +2008-11-02 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/37542 + * tree-ssa-pre.c (fully_constant_expression): Handle more cases. + * tree-ssa-sccvn.c (vn_get_expr_for): Fix typo. + (vn_nary_op_lookup_stmt): Adjust for unary reference trees. + (vn_nary_op_insert_stmt): Likewise. + (visit_use): Likewise. + +2008-11-02 Anatoly Sokolov <aesok@post.ru> + + * config/avr/avr.md (UNSPEC_SWAP): Remove constants. + (*swap): Remove. + (rotlqi3, *rotlqi3_4, rotlhi3, *rotlhi3_8, + rotlsi3, *rotlsi3_8, *rotlsi3_16, *rotlsi3_24): New patterns. + (ashlqi3_const4, ashlqi3_const5, ashlqi3_const6, ashlqi3_l_const4, + ashlqi3_l_const5, ashlqi3_l_const6, lshrqi3_const4, lshrqi3_const5, + lshrqi3_const6, lshrqi3_l_const4, lshrqi3_l_const4, lshrqi3_l_const6 + peephole2's): Replace unspec with rotate. + * config/avr/avr.c (avr_rtx_costs): Add ROTATE. + +2008-11-02 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/37991 + * tree-ssa-sccvn.h (copy_vuses_from_stmt): Remove. + * tree-ssa-sccvn.c (copy_vuses_from_stmt): Make static. + (set_ssa_val_to): Print if the value changed. + (simplify_binary_expression): Strip useless conversions. + +2008-11-01 Hans-Peter Nilsson <hp@axis.com> + + PR target/37939 + * config/cris/cris.c (cris_rtx_costs) <MULT>: Return 0 for an ADDI + operand. + +2008-11-01 Richard Guenther <rguenther@suse.de> + + PR middle-end/37976 + * builtins.c (fold_builtin_strspn): Return a size_t. + (fold_builtin_strcspn): Likewise. + +2008-10-31 Nathan Froyd <froydnj@codesourcery.com> + + * config/rs6000/rs6000.c (rs6000_file_start): Output gnu + attribute for struct return convention. + +2008-10-31 Nathan Froyd <froydnj@codesourcery.com> + + * config/rs6000/crtsavres.asm: Really, really delete. + +2008-10-31 Nathan Froyd <froydnj@codesourcery.com> + + * config/rs6000/rs6000.c (no_global_regs_above): Fix precedence + problem. + (rs6000_emit_prologue): Invert logic. + * config/rs6000/rs6000.md (*save_gpregs_<mode>): Use explicit + (reg:P 11) instead of match_operand. + (*save_fpregs_<mode>): Likewise. + (*restore_gpregs_<mode>): Likewise. + (*return_and_restore_gpregs_<mode>): Likewise. + (*return_and_restore_fpregs_<mode>): Likewise. + * config/rs6000/spe.md (*save_gpregs_spe): Use explicit + (reg:P 11) insted of match_operand. + (*restore_gpregs_spe): Likewise. + (*return_and_restore_gpregs_spe): Likewise. + +2008-10-28 Luis Machado <luisgpm@br.ibm.com> + + * gcc.h (DEFAULT_WORD_SWITCH_TAKES_ARG): Add "dumpbase" to the + list of word switches that take args. + 2008-10-30 Jakub Jelinek <jakub@redhat.com> + * config/s390/s390.c (s390_mark_symbol_ref_as_used): New function. + (s390_output_pool_entry): Call it through for_each_rtx. + PR middle-end/37730 * expr.c (store_constructor): For vectors, if target is a MEM, use target's MEM_ALIAS_SET instead of elttype alias set. diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index aa595981549..0460da68572 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20081030 +20081103 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index bc5ee6dc361..ba94a5e9a7f 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2008-11-02 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + PR target/37977 + * gcc-interface/Makefile.in: Add multilib handling for + s390-linux and s390x-linux. + 2008-10-24 Jakub Jelinek <jakub@redhat.com> * gcc-interface/Make-lang.in (check-ada-subtargets): Depend on diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in index f0211dc8f2e..21bd1df2d09 100644 --- a/gcc/ada/gcc-interface/Makefile.in +++ b/gcc/ada/gcc-interface/Makefile.in @@ -962,36 +962,37 @@ ifeq ($(strip $(filter-out %86 freebsd%,$(arch) $(osys))),) endif ifeq ($(strip $(filter-out s390% linux%,$(arch) $(osys))),) + LIBGNAT_TARGET_PAIRS_COMMON = \ + a-intnam.ads<a-intnam-linux.ads \ + s-inmaop.adb<s-inmaop-posix.adb \ + s-intman.adb<s-intman-posix.adb \ + s-linux.ads<s-linux.ads \ + s-osinte.adb<s-osinte-posix.adb \ + s-osinte.ads<s-osinte-linux.ads \ + s-osprim.adb<s-osprim-posix.adb \ + s-taprop.adb<s-taprop-linux.adb \ + s-tasinf.ads<s-tasinf-linux.ads \ + s-tasinf.adb<s-tasinf-linux.adb \ + s-taspri.ads<s-taspri-posix-noaltstack.ads \ + s-tpopsp.adb<s-tpopsp-posix-foreign.adb + + LIBGNAT_TARGET_PAIRS_32 = \ + system.ads<system-linux-s390.ads + + LIBGNAT_TARGET_PAIRS_64 = \ + system.ads<system-linux-s390x.ads + ifeq ($(strip $(filter-out s390x,$(arch))),) - LIBGNAT_TARGET_PAIRS = \ - a-intnam.ads<a-intnam-linux.ads \ - s-inmaop.adb<s-inmaop-posix.adb \ - s-intman.adb<s-intman-posix.adb \ - s-linux.ads<s-linux.ads \ - s-osinte.adb<s-osinte-posix.adb \ - s-osinte.ads<s-osinte-linux.ads \ - s-osprim.adb<s-osprim-posix.adb \ - s-taprop.adb<s-taprop-linux.adb \ - s-tasinf.ads<s-tasinf-linux.ads \ - s-tasinf.adb<s-tasinf-linux.adb \ - s-taspri.ads<s-taspri-posix-noaltstack.ads \ - s-tpopsp.adb<s-tpopsp-posix-foreign.adb \ - system.ads<system-linux-s390x.ads + ifeq ($(strip $(MULTISUBDIR)),/32) + LIBGNAT_TARGET_PAIRS = \ + $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32) + else + LIBGNAT_TARGET_PAIRS = \ + $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_64) + endif else LIBGNAT_TARGET_PAIRS = \ - a-intnam.ads<a-intnam-linux.ads \ - s-inmaop.adb<s-inmaop-posix.adb \ - s-intman.adb<s-intman-posix.adb \ - s-linux.ads<s-linux.ads \ - s-osinte.adb<s-osinte-posix.adb \ - s-osinte.ads<s-osinte-linux.ads \ - s-osprim.adb<s-osprim-posix.adb \ - s-taprop.adb<s-taprop-linux.adb \ - s-tasinf.ads<s-tasinf-linux.ads \ - s-tasinf.adb<s-tasinf-linux.adb \ - s-taspri.ads<s-taspri-posix-noaltstack.ads \ - s-tpopsp.adb<s-tpopsp-posix-foreign.adb \ - system.ads<system-linux-s390.ads + $(LIBGNAT_TARGET_PAIRS_COMMON) $(LIBGNAT_TARGET_PAIRS_32) endif TOOLS_TARGET_PAIRS = \ diff --git a/gcc/builtins.c b/gcc/builtins.c index 85d61b5681c..a1bba0d7160 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -11398,7 +11398,7 @@ fold_builtin_strspn (tree s1, tree s2) if ((p1 && *p1 == '\0') || (p2 && *p2 == '\0')) /* Evaluate and ignore both arguments in case either one has side-effects. */ - return omit_two_operands (integer_type_node, integer_zero_node, + return omit_two_operands (size_type_node, size_zero_node, s1, s2); return NULL_TREE; } @@ -11444,8 +11444,8 @@ fold_builtin_strcspn (tree s1, tree s2) { /* Evaluate and ignore argument s2 in case it has side-effects. */ - return omit_one_operand (integer_type_node, - integer_zero_node, s2); + return omit_one_operand (size_type_node, + size_zero_node, s2); } /* If the second argument is "", return __builtin_strlen(s1). */ diff --git a/gcc/cfghooks.c b/gcc/cfghooks.c index 0897b0df565..10c04a8b057 100644 --- a/gcc/cfghooks.c +++ b/gcc/cfghooks.c @@ -425,6 +425,7 @@ edge split_block (basic_block bb, void *i) { basic_block new_bb; + edge res; if (!cfg_hooks->split_block) internal_error ("%s does not support split_block", cfg_hooks->name); @@ -450,7 +451,15 @@ split_block (basic_block bb, void *i) bb->loop_father->latch = new_bb; } - return make_single_succ_edge (bb, new_bb, EDGE_FALLTHRU); + res = make_single_succ_edge (bb, new_bb, EDGE_FALLTHRU); + + if (bb->flags & BB_IRREDUCIBLE_LOOP) + { + new_bb->flags |= BB_IRREDUCIBLE_LOOP; + res->flags |= EDGE_IRREDUCIBLE_LOOP; + } + + return res; } /* Splits block BB just after labels. The newly created edge is returned. */ diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 279aea52592..49960742083 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -5193,6 +5193,41 @@ avr_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, int *total, *total += avr_operand_rtx_cost (XEXP (x, 1), mode, code, speed); return true; + case ROTATE: + switch (mode) + { + case QImode: + if (CONST_INT_P (XEXP (x, 1)) && INTVAL (XEXP (x, 1)) == 4) + *total = COSTS_N_INSNS (1); + + break; + + case HImode: + if (CONST_INT_P (XEXP (x, 1)) && INTVAL (XEXP (x, 1)) == 8) + *total = COSTS_N_INSNS (3); + + break; + + case SImode: + if (CONST_INT_P (XEXP (x, 1))) + switch (INTVAL (XEXP (x, 1))) + { + case 8: + case 24: + *total = COSTS_N_INSNS (5); + break; + case 16: + *total = COSTS_N_INSNS (AVR_HAVE_MOVW ? 4 : 6); + break; + } + break; + + default: + return false; + } + *total += avr_operand_rtx_cost (XEXP (x, 0), mode, code, speed); + return true; + case ASHIFT: switch (mode) { diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md index 7a46a3305c4..82a499d48b7 100644 --- a/gcc/config/avr/avr.md +++ b/gcc/config/avr/avr.md @@ -54,7 +54,6 @@ (UNSPEC_INDEX_JMP 1) (UNSPEC_SEI 2) (UNSPEC_CLI 3) - (UNSPEC_SWAP 4) (UNSPECV_PROLOGUE_SAVES 0) (UNSPECV_EPILOGUE_RESTORES 1) @@ -1407,17 +1406,172 @@ [(set_attr "length" "4") (set_attr "cc" "set_n")]) +;; swap swap swap swap swap swap swap swap swap swap swap swap swap swap swap ;; swap -(define_insn "*swap" +(define_expand "rotlqi3" + [(set (match_operand:QI 0 "register_operand" "") + (rotate:QI (match_operand:QI 1 "register_operand" "") + (match_operand:QI 2 "const_int_operand" "")))] + "" + " +{ + if (INTVAL (operands[2]) != 4) + FAIL; +}") + +(define_insn "*rotlqi3_4" [(set (match_operand:QI 0 "register_operand" "=r") - (unspec:QI [(match_operand:QI 1 "register_operand" "0")] - UNSPEC_SWAP))] + (rotate:QI (match_operand:QI 1 "register_operand" "0") + (const_int 4)))] "" "swap %0" [(set_attr "length" "1") (set_attr "cc" "none")]) +(define_expand "rotlhi3" + [(set (match_operand:HI 0 "register_operand" "") + (rotate:HI (match_operand:HI 1 "register_operand" "") + (match_operand:HI 2 "const_int_operand" "")))] + "" + " +{ + if (INTVAL (operands[2]) != 8) + FAIL; +}") + +(define_insn_and_split "*rotlhi3_8" + [(set (match_operand:HI 0 "register_operand" "=r") + (rotate:HI (match_operand:HI 1 "register_operand" "r") + (const_int 8)))] + "" + "mov __tmp_reg__,%A0 + mov %A0,%B0 + mov %B0, __tmp_reg__" + "reload_completed + && REGNO (operands[0]) != REGNO (operands[1])" + [(set (match_dup 2) (match_dup 5)) + (set (match_dup 3) (match_dup 4))] + "operands[2] = gen_lowpart (QImode, operands[0]); + operands[3] = gen_highpart (QImode, operands[0]); + + operands[4] = gen_lowpart (QImode, operands[1]); + operands[5] = gen_highpart (QImode, operands[1]);" + [(set_attr "length" "3") + (set_attr "cc" "none")]) + +(define_expand "rotlsi3" + [(set (match_operand:SI 0 "register_operand" "") + (rotate:SI (match_operand:SI 1 "register_operand" "") + (match_operand:SI 2 "const_int_operand" "")))] + "" + " +{ + if (INTVAL (operands[2]) != 8 + || INTVAL (operands[2]) != 16 + || INTVAL (operands[2]) != 24) + FAIL; +}") + +(define_insn_and_split "*rotlsi3_16" + [(set (match_operand:SI 0 "register_operand" "=r") + (rotate:SI (match_operand:SI 1 "register_operand" "r") + (const_int 16)))] + "" + "{mov __tmp_reg__,%A0\;mov %A0,%D0\;mov %D0, __tmp_reg__\;mov __tmp_reg__,%B0\;mov %B0,%C0\;mov %C0, __tmp_reg__|movw __tmp_reg__,%A0\;movw %A0,%C0\;movw %C0, __tmp_reg__\;clr __zero_reg__}" + "reload_completed + && REGNO (operands[0]) != REGNO (operands[1])" + [(set (match_dup 2) (match_dup 5)) + (set (match_dup 3) (match_dup 4))] + "unsigned int si_lo_off = subreg_lowpart_offset (HImode, SImode); + unsigned int si_hi_off = subreg_highpart_offset (HImode, SImode); + + operands[2] = simplify_gen_subreg (HImode, operands[0], SImode, si_lo_off); + operands[3] = simplify_gen_subreg (HImode, operands[0], SImode, si_hi_off); + + operands[4] = simplify_gen_subreg (HImode, operands[1], SImode, si_lo_off); + operands[5] = simplify_gen_subreg (HImode, operands[1], SImode, si_hi_off);" + [(set (attr "length") (if_then_else (eq_attr "mcu_have_movw" "yes") + (const_int 4) + (const_int 6))) + (set (attr "cc") (if_then_else (eq_attr "mcu_have_movw" "yes") + (const_string "clobber") + (const_string "none")))]) + +(define_insn_and_split "*rotlsi3_8" + [(set (match_operand:SI 0 "register_operand" "=r") + (rotate:SI (match_operand:SI 1 "register_operand" "r") + (const_int 8)))] + "" + "mov __tmp_reg__,%D0 + mov %D0,%C0 + mov %C0,%B0 + mov %B0,%A0 + mov %A0, __tmp_reg__" + "reload_completed + && REGNO (operands[0]) != REGNO (operands[1])" + [(set (match_dup 2) (match_dup 9)) + (set (match_dup 3) (match_dup 6)) + (set (match_dup 4) (match_dup 7)) + (set (match_dup 5) (match_dup 8))] + "unsigned int si_lo_off = subreg_lowpart_offset (HImode, SImode); + unsigned int si_hi_off = subreg_highpart_offset (HImode, SImode); + unsigned int hi_lo_off = subreg_lowpart_offset (QImode, HImode); + unsigned int hi_hi_off = subreg_highpart_offset (QImode, HImode); + + operands[2] = simplify_gen_subreg (HImode, operands[0], SImode, si_lo_off); + operands[4] = simplify_gen_subreg (HImode, operands[0], SImode, si_hi_off); + operands[3] = simplify_gen_subreg (QImode, operands[2], HImode, hi_hi_off); + operands[2] = simplify_gen_subreg (QImode, operands[2], HImode, hi_lo_off); + operands[5] = simplify_gen_subreg (QImode, operands[4], HImode, hi_hi_off); + operands[4] = simplify_gen_subreg (QImode, operands[4], HImode, hi_lo_off); + + operands[6] = simplify_gen_subreg (HImode, operands[1], SImode, si_lo_off); + operands[8] = simplify_gen_subreg (HImode, operands[1], SImode, si_hi_off); + operands[7] = simplify_gen_subreg (QImode, operands[6], HImode, hi_hi_off); + operands[6] = simplify_gen_subreg (QImode, operands[6], HImode, hi_lo_off); + operands[9] = simplify_gen_subreg (QImode, operands[8], HImode, hi_hi_off); + operands[8] = simplify_gen_subreg (QImode, operands[8], HImode, hi_lo_off);" + [(set_attr "length" "5") + (set_attr "cc" "none")]) + +(define_insn_and_split "*rotlsi3_24" + [(set (match_operand:SI 0 "register_operand" "=r") + (rotate:SI (match_operand:SI 1 "register_operand" "r") + (const_int 24)))] + "" + "mov __tmp_reg__,%A0 + mov %A0,%B0 + mov %B0,%C0 + mov %C0,%D0 + mov %D0, __tmp_reg__" + "reload_completed + && REGNO (operands[0]) != REGNO (operands[1])" + [(set (match_dup 2) (match_dup 7)) + (set (match_dup 3) (match_dup 8)) + (set (match_dup 4) (match_dup 9)) + (set (match_dup 5) (match_dup 6))] + "unsigned int si_lo_off = subreg_lowpart_offset (HImode, SImode); + unsigned int si_hi_off = subreg_highpart_offset (HImode, SImode); + unsigned int hi_lo_off = subreg_lowpart_offset (QImode, HImode); + unsigned int hi_hi_off = subreg_highpart_offset (QImode, HImode); + + operands[2] = simplify_gen_subreg (HImode, operands[0], SImode, si_lo_off); + operands[4] = simplify_gen_subreg (HImode, operands[0], SImode, si_hi_off); + operands[3] = simplify_gen_subreg (QImode, operands[2], HImode, hi_hi_off); + operands[2] = simplify_gen_subreg (QImode, operands[2], HImode, hi_lo_off); + operands[5] = simplify_gen_subreg (QImode, operands[4], HImode, hi_hi_off); + operands[4] = simplify_gen_subreg (QImode, operands[4], HImode, hi_lo_off); + + operands[6] = simplify_gen_subreg (HImode, operands[1], SImode, si_lo_off); + operands[8] = simplify_gen_subreg (HImode, operands[1], SImode, si_hi_off); + operands[7] = simplify_gen_subreg (QImode, operands[6], HImode, hi_hi_off); + operands[6] = simplify_gen_subreg (QImode, operands[6], HImode, hi_lo_off); + operands[9] = simplify_gen_subreg (QImode, operands[8], HImode, hi_hi_off); + operands[8] = simplify_gen_subreg (QImode, operands[8], HImode, hi_lo_off);" + [(set_attr "length" "5") + (set_attr "cc" "none")]) + ;;<< << << << << << << << << << << << << << << << << << << << << << << << << << ;; arithmetic shift left @@ -1433,7 +1587,7 @@ (ashift:QI (match_dup 0) (const_int 4)))] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 0) (and:QI (match_dup 0) (const_int -16)))] "") @@ -1442,7 +1596,7 @@ (ashift:QI (match_dup 0) (const_int 5)))] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 0) (ashift:QI (match_dup 0) (const_int 1))) (set (match_dup 0) (and:QI (match_dup 0) (const_int -32)))] "") @@ -1452,7 +1606,7 @@ (ashift:QI (match_dup 0) (const_int 6)))] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 0) (ashift:QI (match_dup 0) (const_int 2))) (set (match_dup 0) (and:QI (match_dup 0) (const_int -64)))] "") @@ -1492,7 +1646,7 @@ (const_int 4))) (match_scratch:QI 1 "d")] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 1) (const_int -16)) (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))] "") @@ -1503,7 +1657,7 @@ (const_int 5))) (match_scratch:QI 1 "d")] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 0) (ashift:QI (match_dup 0) (const_int 1))) (set (match_dup 1) (const_int -32)) (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))] @@ -1515,7 +1669,7 @@ (const_int 6))) (match_scratch:QI 1 "d")] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 0) (ashift:QI (match_dup 0) (const_int 2))) (set (match_dup 1) (const_int -64)) (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))] @@ -1648,7 +1802,7 @@ (lshiftrt:QI (match_dup 0) (const_int 4)))] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 0) (and:QI (match_dup 0) (const_int 15)))] "") @@ -1657,7 +1811,7 @@ (lshiftrt:QI (match_dup 0) (const_int 5)))] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 0) (lshiftrt:QI (match_dup 0) (const_int 1))) (set (match_dup 0) (and:QI (match_dup 0) (const_int 7)))] "") @@ -1667,7 +1821,7 @@ (lshiftrt:QI (match_dup 0) (const_int 6)))] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 0) (lshiftrt:QI (match_dup 0) (const_int 2))) (set (match_dup 0) (and:QI (match_dup 0) (const_int 3)))] "") @@ -1707,7 +1861,7 @@ (const_int 4))) (match_scratch:QI 1 "d")] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 1) (const_int 15)) (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))] "") @@ -1718,7 +1872,7 @@ (const_int 5))) (match_scratch:QI 1 "d")] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 0) (lshiftrt:QI (match_dup 0) (const_int 1))) (set (match_dup 1) (const_int 7)) (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))] @@ -1730,7 +1884,7 @@ (const_int 6))) (match_scratch:QI 1 "d")] "" - [(set (match_dup 0) (unspec:QI [(match_dup 0)] UNSPEC_SWAP)) + [(set (match_dup 0) (rotate:QI (match_dup 0) (const_int 4))) (set (match_dup 0) (lshiftrt:QI (match_dup 0) (const_int 2))) (set (match_dup 1) (const_int 3)) (set (match_dup 0) (and:QI (match_dup 0) (match_dup 1)))] diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c index 3f3f9dcb764..e9c6297513c 100644 --- a/gcc/config/bfin/bfin.c +++ b/gcc/config/bfin/bfin.c @@ -4059,12 +4059,33 @@ bfin_optimize_loop (loop_info loop) print_rtl_single (dump_file, loop->loop_end); } + /* Create a sequence containing the loop setup. */ start_sequence (); if (loop->init != NULL_RTX) emit_insn (loop->init); seq_end = emit_insn (loop->loop_init); + /* If the loop isn't entered at the top, also create a jump to the entry + point. */ + if (!loop->incoming_src && loop->head != loop->incoming_dest) + { + rtx label = BB_HEAD (loop->incoming_dest); + /* If we're jumping to the final basic block in the loop, and there's + only one cheap instruction before the end (typically an increment of + an induction variable), we can just emit a copy here instead of a + jump. */ + if (loop->incoming_dest == loop->tail + && next_real_insn (label) == last_insn + && asm_noperands (last_insn) < 0 + && GET_CODE (PATTERN (last_insn)) == SET) + { + seq_end = emit_insn (copy_rtx (PATTERN (last_insn))); + } + else + seq_end = emit_insn (gen_jump (label)); + } + seq = get_insns (); end_sequence (); @@ -4084,21 +4105,19 @@ bfin_optimize_loop (loop_info loop) basic_block new_bb; edge e; edge_iterator ei; - + +#ifdef ENABLE_CHECKING if (loop->head != loop->incoming_dest) { + /* We aren't entering the loop at the top. Since we've established + that the loop is entered only at one point, this means there + can't be fallthru edges into the head. Any such fallthru edges + would become invalid when we insert the new block, so verify + that this does not in fact happen. */ FOR_EACH_EDGE (e, ei, loop->head->preds) - { - if (e->flags & EDGE_FALLTHRU) - { - rtx newjump = gen_jump (loop->start_label); - emit_insn_before (newjump, BB_HEAD (loop->head)); - new_bb = create_basic_block (newjump, newjump, loop->head->prev_bb); - gcc_assert (new_bb = loop->head->prev_bb); - break; - } - } + gcc_assert (!(e->flags & EDGE_FALLTHRU)); } +#endif emit_insn_before (seq, BB_HEAD (loop->head)); seq = emit_label_before (gen_label_rtx (), seq); diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c index 1d0a34b9abb..88d89993a9e 100644 --- a/gcc/config/cris/cris.c +++ b/gcc/config/cris/cris.c @@ -1796,6 +1796,21 @@ cris_rtx_costs (rtx x, int code, int outer_code, int *total, return true; case MULT: + /* If we have one arm of an ADDI, make sure it gets the cost of + one insn, i.e. zero cost for this operand, and just the cost + of the PLUS, as the insn is created by combine from a PLUS + and an ASHIFT, and the MULT cost below would make the + combined value be larger than the separate insns. The insn + validity is checked elsewhere by combine. + + FIXME: this case is a stop-gap for 4.3 and 4.4, this whole + function should be rewritten. */ + if (outer_code == PLUS && BIAP_INDEX_P (x)) + { + *total = 0; + return true; + } + /* Identify values that are no powers of two. Powers of 2 are taken care of already and those values should not be changed. */ if (!CONST_INT_P (XEXP (x, 1)) diff --git a/gcc/config/rs6000/crtsavres.asm b/gcc/config/rs6000/crtsavres.asm deleted file mode 100644 index 7fea5232885..00000000000 --- a/gcc/config/rs6000/crtsavres.asm +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Special support for eabi and SVR4 - * - * Copyright (C) 1995, 1996, 1998, 2000, 2001 Free Software Foundation, Inc. - * Written By Michael Meissner - * 64-bit support written by David Edelsohn - * - * This file is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2, or (at your option) any - * later version. - * - * In addition to the permissions in the GNU General Public License, the - * Free Software Foundation gives you unlimited permission to link the - * compiled version of this file with other programs, and to distribute - * those programs without any restriction coming from the use of this - * file. (The General Public License restrictions do apply in other - * respects; for example, they cover modification of the file, and - * distribution when not linked into another program.) - * - * This file is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; see the file COPYING. If not, write to - * the Free Software Foundation, 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. - * - * As a special exception, if you link this library with files - * compiled with GCC to produce an executable, this does not cause - * the resulting executable to be covered by the GNU General Public License. - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - */ - -/* Do any initializations needed for the eabi environment */ - - .section ".text" - #include "ppc-asm.h" - -/* On PowerPC64 Linux, these functions are provided by the linker. */ -#ifndef __powerpc64__ - -/* Routines for saving floating point registers, called by the compiler. */ -/* Called with r11 pointing to the stack header word of the caller of the */ -/* function, just beyond the end of the floating point save area. */ - -FUNC_START(_savefpr_14) stfd 14,-144(11) /* save fp registers */ -FUNC_START(_savefpr_15) stfd 15,-136(11) -FUNC_START(_savefpr_16) stfd 16,-128(11) -FUNC_START(_savefpr_17) stfd 17,-120(11) -FUNC_START(_savefpr_18) stfd 18,-112(11) -FUNC_START(_savefpr_19) stfd 19,-104(11) -FUNC_START(_savefpr_20) stfd 20,-96(11) -FUNC_START(_savefpr_21) stfd 21,-88(11) -FUNC_START(_savefpr_22) stfd 22,-80(11) -FUNC_START(_savefpr_23) stfd 23,-72(11) -FUNC_START(_savefpr_24) stfd 24,-64(11) -FUNC_START(_savefpr_25) stfd 25,-56(11) -FUNC_START(_savefpr_26) stfd 26,-48(11) -FUNC_START(_savefpr_27) stfd 27,-40(11) -FUNC_START(_savefpr_28) stfd 28,-32(11) -FUNC_START(_savefpr_29) stfd 29,-24(11) -FUNC_START(_savefpr_30) stfd 30,-16(11) -FUNC_START(_savefpr_31) stfd 31,-8(11) - blr -FUNC_END(_savefpr_31) -FUNC_END(_savefpr_30) -FUNC_END(_savefpr_29) -FUNC_END(_savefpr_28) -FUNC_END(_savefpr_27) -FUNC_END(_savefpr_26) -FUNC_END(_savefpr_25) -FUNC_END(_savefpr_24) -FUNC_END(_savefpr_23) -FUNC_END(_savefpr_22) -FUNC_END(_savefpr_21) -FUNC_END(_savefpr_20) -FUNC_END(_savefpr_19) -FUNC_END(_savefpr_18) -FUNC_END(_savefpr_17) -FUNC_END(_savefpr_16) -FUNC_END(_savefpr_15) -FUNC_END(_savefpr_14) - -/* Routines for saving integer registers, called by the compiler. */ -/* Called with r11 pointing to the stack header word of the caller of the */ -/* function, just beyond the end of the integer save area. */ - -FUNC_START(_savegpr_14) stw 14,-72(11) /* save gp registers */ -FUNC_START(_savegpr_15) stw 15,-68(11) -FUNC_START(_savegpr_16) stw 16,-64(11) -FUNC_START(_savegpr_17) stw 17,-60(11) -FUNC_START(_savegpr_18) stw 18,-56(11) -FUNC_START(_savegpr_19) stw 19,-52(11) -FUNC_START(_savegpr_20) stw 20,-48(11) -FUNC_START(_savegpr_21) stw 21,-44(11) -FUNC_START(_savegpr_22) stw 22,-40(11) -FUNC_START(_savegpr_23) stw 23,-36(11) -FUNC_START(_savegpr_24) stw 24,-32(11) -FUNC_START(_savegpr_25) stw 25,-28(11) -FUNC_START(_savegpr_26) stw 26,-24(11) -FUNC_START(_savegpr_27) stw 27,-20(11) -FUNC_START(_savegpr_28) stw 28,-16(11) -FUNC_START(_savegpr_29) stw 29,-12(11) -FUNC_START(_savegpr_30) stw 30,-8(11) -FUNC_START(_savegpr_31) stw 31,-4(11) - blr -FUNC_END(_savegpr_31) -FUNC_END(_savegpr_30) -FUNC_END(_savegpr_29) -FUNC_END(_savegpr_28) -FUNC_END(_savegpr_27) -FUNC_END(_savegpr_26) -FUNC_END(_savegpr_25) -FUNC_END(_savegpr_24) -FUNC_END(_savegpr_23) -FUNC_END(_savegpr_22) -FUNC_END(_savegpr_21) -FUNC_END(_savegpr_20) -FUNC_END(_savegpr_19) -FUNC_END(_savegpr_18) -FUNC_END(_savegpr_17) -FUNC_END(_savegpr_16) -FUNC_END(_savegpr_15) -FUNC_END(_savegpr_14) - -/* Routines for restoring floating point registers, called by the compiler. */ -/* Called with r11 pointing to the stack header word of the caller of the */ -/* function, just beyond the end of the floating point save area. */ - -FUNC_START(_restfpr_14) lfd 14,-144(11) /* restore fp registers */ -FUNC_START(_restfpr_15) lfd 15,-136(11) -FUNC_START(_restfpr_16) lfd 16,-128(11) -FUNC_START(_restfpr_17) lfd 17,-120(11) -FUNC_START(_restfpr_18) lfd 18,-112(11) -FUNC_START(_restfpr_19) lfd 19,-104(11) -FUNC_START(_restfpr_20) lfd 20,-96(11) -FUNC_START(_restfpr_21) lfd 21,-88(11) -FUNC_START(_restfpr_22) lfd 22,-80(11) -FUNC_START(_restfpr_23) lfd 23,-72(11) -FUNC_START(_restfpr_24) lfd 24,-64(11) -FUNC_START(_restfpr_25) lfd 25,-56(11) -FUNC_START(_restfpr_26) lfd 26,-48(11) -FUNC_START(_restfpr_27) lfd 27,-40(11) -FUNC_START(_restfpr_28) lfd 28,-32(11) -FUNC_START(_restfpr_29) lfd 29,-24(11) -FUNC_START(_restfpr_30) lfd 30,-16(11) -FUNC_START(_restfpr_31) lfd 31,-8(11) - blr -FUNC_END(_restfpr_31) -FUNC_END(_restfpr_30) -FUNC_END(_restfpr_29) -FUNC_END(_restfpr_28) -FUNC_END(_restfpr_27) -FUNC_END(_restfpr_26) -FUNC_END(_restfpr_25) -FUNC_END(_restfpr_24) -FUNC_END(_restfpr_23) -FUNC_END(_restfpr_22) -FUNC_END(_restfpr_21) -FUNC_END(_restfpr_20) -FUNC_END(_restfpr_19) -FUNC_END(_restfpr_18) -FUNC_END(_restfpr_17) -FUNC_END(_restfpr_16) -FUNC_END(_restfpr_15) -FUNC_END(_restfpr_14) - -/* Routines for restoring integer registers, called by the compiler. */ -/* Called with r11 pointing to the stack header word of the caller of the */ -/* function, just beyond the end of the integer restore area. */ - -FUNC_START(_restgpr_14) lwz 14,-72(11) /* restore gp registers */ -FUNC_START(_restgpr_15) lwz 15,-68(11) -FUNC_START(_restgpr_16) lwz 16,-64(11) -FUNC_START(_restgpr_17) lwz 17,-60(11) -FUNC_START(_restgpr_18) lwz 18,-56(11) -FUNC_START(_restgpr_19) lwz 19,-52(11) -FUNC_START(_restgpr_20) lwz 20,-48(11) -FUNC_START(_restgpr_21) lwz 21,-44(11) -FUNC_START(_restgpr_22) lwz 22,-40(11) -FUNC_START(_restgpr_23) lwz 23,-36(11) -FUNC_START(_restgpr_24) lwz 24,-32(11) -FUNC_START(_restgpr_25) lwz 25,-28(11) -FUNC_START(_restgpr_26) lwz 26,-24(11) -FUNC_START(_restgpr_27) lwz 27,-20(11) -FUNC_START(_restgpr_28) lwz 28,-16(11) -FUNC_START(_restgpr_29) lwz 29,-12(11) -FUNC_START(_restgpr_30) lwz 30,-8(11) -FUNC_START(_restgpr_31) lwz 31,-4(11) - blr -FUNC_END(_restgpr_31) -FUNC_END(_restgpr_30) -FUNC_END(_restgpr_29) -FUNC_END(_restgpr_28) -FUNC_END(_restgpr_27) -FUNC_END(_restgpr_26) -FUNC_END(_restgpr_25) -FUNC_END(_restgpr_24) -FUNC_END(_restgpr_23) -FUNC_END(_restgpr_22) -FUNC_END(_restgpr_21) -FUNC_END(_restgpr_20) -FUNC_END(_restgpr_19) -FUNC_END(_restgpr_18) -FUNC_END(_restgpr_17) -FUNC_END(_restgpr_16) -FUNC_END(_restgpr_15) -FUNC_END(_restgpr_14) - -/* Routines for restoring floating point registers, called by the compiler. */ -/* Called with r11 pointing to the stack header word of the caller of the */ -/* function, just beyond the end of the floating point save area. */ -/* In addition to restoring the fp registers, it will return to the caller's */ -/* caller */ - -FUNC_START(_restfpr_14_x) lfd 14,-144(11) /* restore fp registers */ -FUNC_START(_restfpr_15_x) lfd 15,-136(11) -FUNC_START(_restfpr_16_x) lfd 16,-128(11) -FUNC_START(_restfpr_17_x) lfd 17,-120(11) -FUNC_START(_restfpr_18_x) lfd 18,-112(11) -FUNC_START(_restfpr_19_x) lfd 19,-104(11) -FUNC_START(_restfpr_20_x) lfd 20,-96(11) -FUNC_START(_restfpr_21_x) lfd 21,-88(11) -FUNC_START(_restfpr_22_x) lfd 22,-80(11) -FUNC_START(_restfpr_23_x) lfd 23,-72(11) -FUNC_START(_restfpr_24_x) lfd 24,-64(11) -FUNC_START(_restfpr_25_x) lfd 25,-56(11) -FUNC_START(_restfpr_26_x) lfd 26,-48(11) -FUNC_START(_restfpr_27_x) lfd 27,-40(11) -FUNC_START(_restfpr_28_x) lfd 28,-32(11) -FUNC_START(_restfpr_29_x) lfd 29,-24(11) -FUNC_START(_restfpr_30_x) lfd 30,-16(11) -FUNC_START(_restfpr_31_x) lwz 0,4(11) - lfd 31,-8(11) - mtlr 0 - mr 1,11 - blr -FUNC_END(_restfpr_31_x) -FUNC_END(_restfpr_30_x) -FUNC_END(_restfpr_29_x) -FUNC_END(_restfpr_28_x) -FUNC_END(_restfpr_27_x) -FUNC_END(_restfpr_26_x) -FUNC_END(_restfpr_25_x) -FUNC_END(_restfpr_24_x) -FUNC_END(_restfpr_23_x) -FUNC_END(_restfpr_22_x) -FUNC_END(_restfpr_21_x) -FUNC_END(_restfpr_20_x) -FUNC_END(_restfpr_19_x) -FUNC_END(_restfpr_18_x) -FUNC_END(_restfpr_17_x) -FUNC_END(_restfpr_16_x) -FUNC_END(_restfpr_15_x) -FUNC_END(_restfpr_14_x) - -/* Routines for restoring integer registers, called by the compiler. */ -/* Called with r11 pointing to the stack header word of the caller of the */ -/* function, just beyond the end of the integer restore area. */ - -FUNC_START(_restgpr_14_x) lwz 14,-72(11) /* restore gp registers */ -FUNC_START(_restgpr_15_x) lwz 15,-68(11) -FUNC_START(_restgpr_16_x) lwz 16,-64(11) -FUNC_START(_restgpr_17_x) lwz 17,-60(11) -FUNC_START(_restgpr_18_x) lwz 18,-56(11) -FUNC_START(_restgpr_19_x) lwz 19,-52(11) -FUNC_START(_restgpr_20_x) lwz 20,-48(11) -FUNC_START(_restgpr_21_x) lwz 21,-44(11) -FUNC_START(_restgpr_22_x) lwz 22,-40(11) -FUNC_START(_restgpr_23_x) lwz 23,-36(11) -FUNC_START(_restgpr_24_x) lwz 24,-32(11) -FUNC_START(_restgpr_25_x) lwz 25,-28(11) -FUNC_START(_restgpr_26_x) lwz 26,-24(11) -FUNC_START(_restgpr_27_x) lwz 27,-20(11) -FUNC_START(_restgpr_28_x) lwz 28,-16(11) -FUNC_START(_restgpr_29_x) lwz 29,-12(11) -FUNC_START(_restgpr_30_x) lwz 30,-8(11) -FUNC_START(_restgpr_31_x) lwz 0,4(11) - lwz 31,-4(11) - mtlr 0 - mr 1,11 - blr -FUNC_END(_restgpr_31_x) -FUNC_END(_restgpr_30_x) -FUNC_END(_restgpr_29_x) -FUNC_END(_restgpr_28_x) -FUNC_END(_restgpr_27_x) -FUNC_END(_restgpr_26_x) -FUNC_END(_restgpr_25_x) -FUNC_END(_restgpr_24_x) -FUNC_END(_restgpr_23_x) -FUNC_END(_restgpr_22_x) -FUNC_END(_restgpr_21_x) -FUNC_END(_restgpr_20_x) -FUNC_END(_restgpr_19_x) -FUNC_END(_restgpr_18_x) -FUNC_END(_restgpr_17_x) -FUNC_END(_restgpr_16_x) -FUNC_END(_restgpr_15_x) -FUNC_END(_restgpr_14_x) - -#endif diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 6df7aa79732..faeae52e7ff 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -2642,6 +2642,9 @@ rs6000_file_start (void) (TARGET_ALTIVEC_ABI ? 2 : TARGET_SPE_ABI ? 3 : 1)); + fprintf (file, "\t.gnu_attribute 12, %d\n", + aix_struct_return ? 2 : 1); + } #endif diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 45dae8bb20d..e64b58ca904 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -6664,6 +6664,24 @@ s390_chunkify_cancel (struct constant_pool *pool_list) } } +/* Helper rtx-iteration-function for s390_output_pool_entry. Marks + SYMBOL_REFs as referenced through use of assemble_external. */ + +static int +s390_mark_symbol_ref_as_used (rtx *x, void *dummy ATTRIBUTE_UNUSED) +{ + /* If we have a used symbol, we may have to emit assembly + annotations corresponding to whether the symbol is external, weak + or has non-default visibility. */ + if (GET_CODE (*x) == SYMBOL_REF) + { + tree t = SYMBOL_REF_DECL (*x); + if (t) + assemble_external (t); + return -1; + } + return 0; +} /* Output the constant pool entry EXP in mode MODE with alignment ALIGN. */ @@ -6684,6 +6702,7 @@ s390_output_pool_entry (rtx exp, enum machine_mode mode, unsigned int align) case MODE_INT: assemble_integer (exp, GET_MODE_SIZE (mode), align, 1); + for_each_rtx (&exp, s390_mark_symbol_ref_as_used, NULL); break; default: diff --git a/gcc/configure b/gcc/configure index f2d8bdb9c44..44bf54fb19d 100755 --- a/gcc/configure +++ b/gcc/configure @@ -458,7 +458,7 @@ ac_includes_default="\ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP ppllibs pplinc ltdllibs ltdlinc ltdl_ldflags gdbmlibs gdbminc gdbm_ldflags COMPILER_PROBE_OBJECT BASILYSMELT_OBJECT loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN ac_ct_AR STRIP ac_ct_STRIP lt_ECHO objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical build_libsubdir build_subdir host_subdir target_subdir GENINSRC CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT GNATBIND ac_ct_GNATBIND GNATMAKE ac_ct_GNATMAKE NO_MINUS_C_MINUS_O OUTPUT_OPTION CPP EGREP ppllibs pplinc ltdllibs ltdlinc ltdl_ldflags gdbmlibs gdbminc gdbm_ldflags COMPILER_PROBE_OBJECT BASILYSMELT_OBJECT loose_warn strict_warn warn_cflags nocommon_flag TREEBROWSER valgrind_path valgrind_path_defines valgrind_command coverage_flags enable_multilib enable_decimal_float enable_fixed_point enable_shared TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE CROSS_SYSTEM_HEADER_DIR onestep PKGVERSION REPORT_BUGS_TO REPORT_BUGS_TEXI datarootdir docdir htmldir SET_MAKE AWK LN_S LN RANLIB ac_ct_RANLIB ranlib_flags INSTALL INSTALL_PROGRAM INSTALL_DATA make_compare_target have_mktemp_command MAKEINFO BUILD_INFO GENERATED_MANPAGES FLEX BISON NM AR COLLECT2_LIBS GNAT_LIBEXC LDEXP_LIB TARGET_GETGROUPS_T LIBICONV LTLIBICONV LIBICONV_DEP manext objext gthread_flags extra_modes_file extra_opt_files USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT CROSS ALL SYSTEM_HEADER_DIR inhibit_libc CC_FOR_BUILD BUILD_CFLAGS BUILD_LDFLAGS STMP_FIXINC STMP_FIXPROTO collect2 LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN OBJDUMP ac_ct_OBJDUMP ac_ct_AR STRIP ac_ct_STRIP lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 objdir enable_fast_install gcc_cv_as ORIGINAL_AS_FOR_TARGET gcc_cv_ld ORIGINAL_LD_FOR_TARGET gcc_cv_nm ORIGINAL_NM_FOR_TARGET gcc_cv_objdump libgcc_visibility GGC zlibdir zlibinc MAINT gcc_tooldir dollar slibdir subdirs srcdir all_compilers all_gtfiles all_lang_makefrags all_lang_makefiles all_languages all_selected_languages build_exeext build_install_headers_dir build_xm_file_list build_xm_include_list build_xm_defines build_file_translate check_languages cpp_install_dir xmake_file tmake_file extra_gcc_objs extra_headers_list extra_objs extra_parts extra_passes extra_programs float_h_file gcc_config_arguments gcc_gxx_include_dir host_exeext host_xm_file_list host_xm_include_list host_xm_defines out_host_hook_obj install lang_opt_files lang_specs_files lang_tree_files local_prefix md_file objc_boehm_gc out_file out_object_file thread_file tm_file_list tm_include_list tm_defines tm_p_file_list tm_p_include_list xm_file_list xm_include_list xm_defines c_target_objs cxx_target_objs fortran_target_objs target_cpu_default GMPLIBS GMPINC PPLLIBS PPLINC CLOOGLIBS CLOOGINC LIBOBJS LTLIBOBJS' ac_subst_files='language_hooks' ac_pwd=`pwd` @@ -14870,134 +14870,22 @@ esac # exec-tool will fail. - - -macro_version='2.1a' -macro_revision='1.2435' - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Set options - -enable_dlopen=no - - -enable_win32_dll=no - - -# Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi; - - - - - - - - -# Check whether --enable-static or --disable-static was given. -if test "${enable_static+set}" = set; then - enableval="$enable_static" - p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi; +case `pwd` in + *\ * | *\ *) + { echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac +macro_version='2.2.6' +macro_revision='1.3012' -# Check whether --with-pic or --without-pic was given. -if test "${with_pic+set}" = set; then - withval="$with_pic" - pic_mode="$withval" -else - pic_mode=default -fi; - -test -z "$pic_mode" && pic_mode=default - - - - - - - -# Check whether --enable-fast-install or --disable-fast-install was given. -if test "${enable_fast_install+set}" = set; then - enableval="$enable_fast_install" - p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi; @@ -15005,6 +14893,7 @@ fi; +ltmain="$ac_aux_dir/ltmain.sh" echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 @@ -15226,7 +15115,6 @@ with_gnu_ld=$lt_cv_prog_gnu_ld - echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 echo $ECHO_N "checking for BSD- or MS-compatible name lister (nm)... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then @@ -15388,13 +15276,13 @@ if test "${lt_cv_nm_interface+set}" = set; then else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:15391: $ac_compile\"" >&5) + (eval echo "\"\$as_me:15279: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:15394: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:15282: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:15397: output\"" >&5) + (eval echo "\"\$as_me:15285: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -15440,7 +15328,7 @@ else lt_cv_sys_max_cmd_len=-1; ;; - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, @@ -15501,8 +15389,8 @@ else fi ;; *) - lt_cv_sys_max_cmd_len=`getconf ARG_MAX 2> /dev/null` - if test -n $lt_cv_sys_max_cmd_len; then + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else @@ -15549,7 +15437,6 @@ max_cmd_len=$lt_cv_sys_max_cmd_len - : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} @@ -15560,7 +15447,9 @@ echo $ECHO_N "checking whether the shell understands some XSI constructs... $ECH xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, ) >/dev/null 2>&1 \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes echo "$as_me:$LINENO: result: $xsi_shell" >&5 echo "${ECHO_T}$xsi_shell" >&6 @@ -15640,6 +15529,95 @@ esac +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_OBJDUMP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + echo "$as_me:$LINENO: result: $OBJDUMP" >&5 +echo "${ECHO_T}$OBJDUMP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false" +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 +echo "${ECHO_T}$ac_ct_OBJDUMP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + OBJDUMP=$ac_ct_OBJDUMP +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6 @@ -15694,6 +15672,12 @@ mingw* | pw32*) fi ;; +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; @@ -16116,7 +16100,7 @@ test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= @@ -16196,7 +16180,7 @@ case $host_os in aix*) symcode='[BCDT]' ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) @@ -16240,6 +16224,7 @@ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -16379,7 +16364,7 @@ _LT_EOF echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi - rm -f conftest* conftst* + rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then @@ -16418,6 +16403,11 @@ fi + + + + + # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" @@ -16449,7 +16439,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 16452 "configure"' > conftest.$ac_ext + echo '#line 16442 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -16624,7 +16614,11 @@ sparc*-*solaris*) *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) LD="${LD-ld} -64" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; esac ;; esac @@ -16636,6 +16630,559 @@ esac need_locks="$enable_libtool_lock" + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_DSYMUTIL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 +echo "${ECHO_T}$DSYMUTIL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_DSYMUTIL" && ac_cv_prog_ac_ct_DSYMUTIL=":" +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 +echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + DSYMUTIL=$ac_ct_DSYMUTIL +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_NMEDIT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + echo "$as_me:$LINENO: result: $NMEDIT" >&5 +echo "${ECHO_T}$NMEDIT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_NMEDIT" && ac_cv_prog_ac_ct_NMEDIT=":" +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 +echo "${ECHO_T}$ac_ct_NMEDIT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + NMEDIT=$ac_ct_NMEDIT +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_LIPO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + echo "$as_me:$LINENO: result: $LIPO" >&5 +echo "${ECHO_T}$LIPO" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_LIPO" && ac_cv_prog_ac_ct_LIPO=":" +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 +echo "${ECHO_T}$ac_ct_LIPO" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + LIPO=$ac_ct_LIPO +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_OTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + echo "$as_me:$LINENO: result: $OTOOL" >&5 +echo "${ECHO_T}$OTOOL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_OTOOL" && ac_cv_prog_ac_ct_OTOOL=":" +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 +echo "${ECHO_T}$ac_ct_OTOOL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + OTOOL=$ac_ct_OTOOL +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_OTOOL64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + echo "$as_me:$LINENO: result: $OTOOL64" >&5 +echo "${ECHO_T}$OTOOL64" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_OTOOL64" && ac_cv_prog_ac_ct_OTOOL64=":" +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 +echo "${ECHO_T}$ac_ct_OTOOL64" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + OTOOL64=$ac_ct_OTOOL64 +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 +echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6 +if test "${lt_cv_apple_cc_single_mod+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 +echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6 + echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 +echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6 +if test "${lt_cv_ld_exported_symbols_list+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_ld_exported_symbols_list=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_ld_exported_symbols_list=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 +echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6 + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + + for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -16691,6 +17238,128 @@ done +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi; + + + + + + + + + # Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi; + + + + + + + + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi; + + + + + + + + + + # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" @@ -17037,7 +17706,7 @@ ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` -$RM conftest* +$RM -r conftest* ## CAVEAT EMPTOR: @@ -17069,11 +17738,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17072: $lt_compile\"" >&5) + (eval echo "\"\$as_me:17741: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:17076: \$? = $ac_status" >&5 + echo "$as_me:17745: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -17123,19 +17792,25 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; amigaos*) - if test "$host_cpu" = m68k; then - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - fi + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -17150,10 +17825,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) # +Z the default ;; *) @@ -17202,18 +17878,8 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - lt_prog_compiler_pic='-qnocommon' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' @@ -17243,11 +17909,25 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 linux* | k*bsd*-gnu) case $cc_basename in - icc* | ecc*) + # old Intel for x86_64 which still supported -KPIC. + ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -17260,6 +17940,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) @@ -17375,10 +18061,10 @@ echo "${ECHO_T}$lt_prog_compiler_pic" >&6 if test -n "$lt_prog_compiler_pic"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 -if test "${lt_prog_compiler_pic_works+set}" = set; then +if test "${lt_cv_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - lt_prog_compiler_pic_works=no + lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" @@ -17391,27 +18077,27 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17394: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18080: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:17398: \$? = $ac_status" >&5 + echo "$as_me:18084: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_prog_compiler_pic_works=yes + lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6 -if test x"$lt_prog_compiler_pic_works" = xyes; then +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; @@ -17434,10 +18120,10 @@ fi wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 -if test "${lt_prog_compiler_static_works+set}" = set; then +if test "${lt_cv_prog_compiler_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - lt_prog_compiler_static_works=no + lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext @@ -17450,20 +18136,20 @@ else $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then - lt_prog_compiler_static_works=yes + lt_cv_prog_compiler_static_works=yes fi else - lt_prog_compiler_static_works=yes + lt_cv_prog_compiler_static_works=yes fi fi - $RM conftest* + $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6 -if test x"$lt_prog_compiler_static_works" = xyes; then +if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= @@ -17496,11 +18182,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17499: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18185: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:17503: \$? = $ac_status" >&5 + echo "$as_me:18189: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -17551,11 +18237,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17554: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18240: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:17558: \$? = $ac_status" >&5 + echo "$as_me:18244: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -17645,16 +18331,17 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. - exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -17716,19 +18403,18 @@ _LT_EOF ;; amigaos*) - if test "$host_cpu" = m68k; then - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - fi - - # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - ld_shlibs=no + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac ;; beos*) @@ -17742,7 +18428,7 @@ _LT_EOF fi ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' @@ -17793,6 +18479,7 @@ _LT_EOF && test "$tmp_diet" = no then tmp_addflag= + tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' @@ -17807,6 +18494,12 @@ _LT_EOF tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 @@ -17815,8 +18508,6 @@ _LT_EOF tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; - *) - tmp_sharedflag='-shared' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' @@ -17826,6 +18517,22 @@ _LT_EOF echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld='-rpath $libdir' + archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac else ld_shlibs=no fi @@ -18021,6 +18728,7 @@ _LT_EOF fi fi + export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes @@ -18173,20 +18881,25 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; amigaos*) - if test "$host_cpu" = m68k; then - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - fi - # see comment about different semantics on the GNU ld section - ld_shlibs=no + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is @@ -18208,73 +18921,30 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; darwin* | rhapsody*) - case $host_os in - rhapsody* | darwin1.[012]) - allow_undefined_flag='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[012]) - allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - ;; - esac - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='' - link_all_deplibs=yes - if test "$GCC" = yes ; then - if test "${lt_cv_apple_cc_single_mod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi-module to the - # link flags. - echo "int foo(void){return 1;}" > conftest.c - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib ${wl}-single_module conftest.c - if test -f libconftest.dylib; then - lt_cv_apple_cc_single_mod=yes - rm libconftest.dylib - fi - rm conftest.$ac_ext - fi -fi - output_verbose_link_cmd=echo - if test "X$lt_cv_apple_cc_single_mod" = Xyes ; then - archive_cmds='$CC -dynamiclib $single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $single_module -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - module_expsym_cmds='sed -e "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case $cc_basename in - xlc*) - output_verbose_link_cmd=echo - archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`$ECHO $rpath/$soname` $verstring' - module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds - archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - ld_shlibs=no - ;; - esac - fi + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + ;; dgux*) @@ -18356,7 +19026,7 @@ fi archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' @@ -18474,25 +19144,29 @@ rm -f conftest.err conftest.$ac_objext \ ;; openbsd*) - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no fi ;; @@ -18931,8 +19605,8 @@ esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -withGCC=$GCC -if test "$withGCC" = yes; then + +if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; @@ -19058,13 +19732,18 @@ aix[4-9]*) ;; amigaos*) - if test "$host_cpu" = m68k; then + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - else - dynamic_linker=no - fi + ;; + esac ;; beos*) @@ -19087,14 +19766,14 @@ bsdi[45]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no - case $withGCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -19117,7 +19796,7 @@ cygwin* | mingw* | pw32*) soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; - mingw*) + mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` @@ -19383,7 +20062,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir"; then + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi @@ -19404,7 +20083,7 @@ rm -f conftest.err conftest.$ac_objext \ # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -19588,7 +20267,7 @@ tpf*) version_type=linux need_lib_prefix=no need_version=no - library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -19614,6 +20293,13 @@ if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + @@ -19758,7 +20444,7 @@ else lt_cv_dlopen_self=yes ;; - mingw* | pw32*) + mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; @@ -20005,7 +20691,7 @@ fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 @@ -20299,7 +20985,7 @@ fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi @@ -20348,7 +21034,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 20351 "configure" +#line 21037 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -20389,10 +21075,6 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); -#endif - void fnord() { int i=42;} int main () { @@ -20408,7 +21090,7 @@ int main () else puts (dlerror ()); - exit (status); + return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 @@ -20448,7 +21130,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 20451 "configure" +#line 21133 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -20489,10 +21171,6 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); -#endif - void fnord() { int i=42;} int main () { @@ -20508,7 +21186,7 @@ int main () else puts (dlerror ()); - exit (status); + return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 @@ -21440,6 +22118,47 @@ _ACEOF fi +echo "$as_me:$LINENO: checking linker read-only and read-write section mixing" >&5 +echo $ECHO_N "checking linker read-only and read-write section mixing... $ECHO_C" >&6 +gcc_cv_ld_ro_rw_mix=unknown +if test $in_tree_ld = yes ; then + if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \ + && test $in_tree_ld_is_elf = yes; then + gcc_cv_ld_ro_rw_mix=read-write + fi +elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then + echo '.section myfoosect, "a"' > conftest1.s + echo '.section myfoosect, "aw"' > conftest2.s + echo '.byte 1' >> conftest2.s + echo '.section myfoosect, "a"' > conftest3.s + echo '.byte 0' >> conftest3.s + if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \ + && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \ + && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \ + && $gcc_cv_ld -shared -o conftest1.so conftest1.o \ + conftest2.o conftest3.o > /dev/null 2>&1; then + gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \ + | sed -e '/myfoosect/!d' -e N` + if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then + if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then + gcc_cv_ld_ro_rw_mix=read-only + else + gcc_cv_ld_ro_rw_mix=read-write + fi + fi + fi + rm -f conftest.* conftest[123].* +fi +if test x$gcc_cv_ld_ro_rw_mix = xread-write; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_LD_RO_RW_SECTION_MIXING 1 +_ACEOF + +fi +echo "$as_me:$LINENO: result: $gcc_cv_ld_ro_rw_mix" >&5 +echo "${ECHO_T}$gcc_cv_ld_ro_rw_mix" >&6 + # Check if we have .[us]leb128, and support symbol arithmetic with it. echo "$as_me:$LINENO: checking assembler for .sleb128 and .uleb128" >&5 echo $ECHO_N "checking assembler for .sleb128 and .uleb128... $ECHO_C" >&6 @@ -21521,7 +22240,31 @@ else echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } then - gcc_cv_as_cfi_directive=yes + case "$target" in + *-*-solaris*) + # If the linker used on Solaris (like Sun ld) isn't capable of merging + # read-only and read-write sections, we need to make sure that the + # assembler used emits read-write .eh_frame sections. + if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then + if test "x$gcc_cv_objdump" != x; then + if $gcc_cv_objdump -h conftest.o 2>/dev/null | \ + sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then + gcc_cv_as_cfi_directive=no + else + gcc_cv_as_cfi_directive=yes + fi + else + # no objdump, err on the side of caution + gcc_cv_as_cfi_directive=no + fi + else + gcc_cv_as_cfi_directive=yes + fi + ;; + *-*-*) + gcc_cv_as_cfi_directive=yes + ;; +esac else echo "configure: failed program was" >&5 cat conftest.s >&5 @@ -23845,47 +24588,6 @@ _ACEOF fi -echo "$as_me:$LINENO: checking linker read-only and read-write section mixing" >&5 -echo $ECHO_N "checking linker read-only and read-write section mixing... $ECHO_C" >&6 -gcc_cv_ld_ro_rw_mix=unknown -if test $in_tree_ld = yes ; then - if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \ - && test $in_tree_ld_is_elf = yes; then - gcc_cv_ld_ro_rw_mix=read-write - fi -elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then - echo '.section myfoosect, "a"' > conftest1.s - echo '.section myfoosect, "aw"' > conftest2.s - echo '.byte 1' >> conftest2.s - echo '.section myfoosect, "a"' > conftest3.s - echo '.byte 0' >> conftest3.s - if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \ - && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \ - && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \ - && $gcc_cv_ld -shared -o conftest1.so conftest1.o \ - conftest2.o conftest3.o > /dev/null 2>&1; then - gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \ - | sed -e '/myfoosect/!d' -e N` - if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then - if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then - gcc_cv_ld_ro_rw_mix=read-only - else - gcc_cv_ld_ro_rw_mix=read-write - fi - fi - fi - rm -f conftest.* conftest[123].* -fi -if test x$gcc_cv_ld_ro_rw_mix = xread-write; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_LD_RO_RW_SECTION_MIXING 1 -_ACEOF - -fi -echo "$as_me:$LINENO: result: $gcc_cv_ld_ro_rw_mix" >&5 -echo "${ECHO_T}$gcc_cv_ld_ro_rw_mix" >&6 - echo "$as_me:$LINENO: checking linker PT_GNU_EH_FRAME support" >&5 echo $ECHO_N "checking linker PT_GNU_EH_FRAME support... $ECHO_C" >&6 gcc_cv_ld_eh_frame_hdr=no @@ -25482,10 +26184,22 @@ s,@GREP@,$GREP,;t t s,@LD@,$LD,;t t s,@DUMPBIN@,$DUMPBIN,;t t s,@ac_ct_DUMPBIN@,$ac_ct_DUMPBIN,;t t +s,@OBJDUMP@,$OBJDUMP,;t t +s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t s,@ac_ct_AR@,$ac_ct_AR,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@lt_ECHO@,$lt_ECHO,;t t +s,@DSYMUTIL@,$DSYMUTIL,;t t +s,@ac_ct_DSYMUTIL@,$ac_ct_DSYMUTIL,;t t +s,@NMEDIT@,$NMEDIT,;t t +s,@ac_ct_NMEDIT@,$ac_ct_NMEDIT,;t t +s,@LIPO@,$LIPO,;t t +s,@ac_ct_LIPO@,$ac_ct_LIPO,;t t +s,@OTOOL@,$OTOOL,;t t +s,@ac_ct_OTOOL@,$ac_ct_OTOOL,;t t +s,@OTOOL64@,$OTOOL64,;t t +s,@ac_ct_OTOOL64@,$ac_ct_OTOOL64,;t t s,@objdir@,$objdir,;t t s,@enable_fast_install@,$enable_fast_install,;t t s,@gcc_cv_as@,$gcc_cv_as,;t t diff --git a/gcc/configure.ac b/gcc/configure.ac index 991a9042183..4d3491c59cd 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -2457,6 +2457,45 @@ if test $gcc_cv_as_hidden = yes && test $gcc_cv_ld_hidden = yes; then [Define if your assembler and linker support .hidden.]) fi +AC_MSG_CHECKING(linker read-only and read-write section mixing) +gcc_cv_ld_ro_rw_mix=unknown +if test $in_tree_ld = yes ; then + if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \ + && test $in_tree_ld_is_elf = yes; then + gcc_cv_ld_ro_rw_mix=read-write + fi +elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then + echo '.section myfoosect, "a"' > conftest1.s + echo '.section myfoosect, "aw"' > conftest2.s + echo '.byte 1' >> conftest2.s + echo '.section myfoosect, "a"' > conftest3.s + echo '.byte 0' >> conftest3.s + if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \ + && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \ + && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \ + && $gcc_cv_ld -shared -o conftest1.so conftest1.o \ + conftest2.o conftest3.o > /dev/null 2>&1; then + gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \ + | sed -e '/myfoosect/!d' -e N` + if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then + if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then + gcc_cv_ld_ro_rw_mix=read-only + else + gcc_cv_ld_ro_rw_mix=read-write + fi + fi + fi +changequote(,)dnl + rm -f conftest.* conftest[123].* +changequote([,])dnl +fi +if test x$gcc_cv_ld_ro_rw_mix = xread-write; then + AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1, + [Define if your linker links a mix of read-only + and read-write sections into a read-write section.]) +fi +AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix) + # Check if we have .[us]leb128, and support symbol arithmetic with it. gcc_GAS_CHECK_FEATURE([.sleb128 and .uleb128], gcc_cv_as_leb128, [elf,2,11,0],, @@ -2496,7 +2535,32 @@ gcc_GAS_CHECK_FEATURE([cfi directives], gcc_cv_as_cfi_directive, .cfi_same_value 1 .cfi_def_cfa 1, 2 .cfi_escape 1, 2, 3, 4, 5 - .cfi_endproc]) + .cfi_endproc], +[case "$target" in + *-*-solaris*) + # If the linker used on Solaris (like Sun ld) isn't capable of merging + # read-only and read-write sections, we need to make sure that the + # assembler used emits read-write .eh_frame sections. + if test "x$gcc_cv_ld_ro_rw_mix" != xread-write; then + if test "x$gcc_cv_objdump" != x; then + if $gcc_cv_objdump -h conftest.o 2>/dev/null | \ + sed -e /.eh_frame/!d -e N | grep READONLY > /dev/null; then + gcc_cv_as_cfi_directive=no + else + gcc_cv_as_cfi_directive=yes + fi + else + # no objdump, err on the side of caution + gcc_cv_as_cfi_directive=no + fi + else + gcc_cv_as_cfi_directive=yes + fi + ;; + *-*-*) + gcc_cv_as_cfi_directive=yes + ;; +esac]) AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_DIRECTIVE, [`if test $gcc_cv_as_cfi_directive = yes; then echo 1; else echo 0; fi`], [Define 0/1 if your assembler supports CFI directives.]) @@ -3525,45 +3589,6 @@ if test "x$gcc_cv_as_line_zero" = xyes; then [Define if the assembler won't complain about a line such as # 0 "" 2.]) fi -AC_MSG_CHECKING(linker read-only and read-write section mixing) -gcc_cv_ld_ro_rw_mix=unknown -if test $in_tree_ld = yes ; then - if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \ - && test $in_tree_ld_is_elf = yes; then - gcc_cv_ld_ro_rw_mix=read-write - fi -elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then - echo '.section myfoosect, "a"' > conftest1.s - echo '.section myfoosect, "aw"' > conftest2.s - echo '.byte 1' >> conftest2.s - echo '.section myfoosect, "a"' > conftest3.s - echo '.byte 0' >> conftest3.s - if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \ - && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \ - && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1 \ - && $gcc_cv_ld -shared -o conftest1.so conftest1.o \ - conftest2.o conftest3.o > /dev/null 2>&1; then - gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \ - | sed -e '/myfoosect/!d' -e N` - if echo "$gcc_cv_ld_ro_rw_mix" | grep CONTENTS > /dev/null; then - if echo "$gcc_cv_ld_ro_rw_mix" | grep READONLY > /dev/null; then - gcc_cv_ld_ro_rw_mix=read-only - else - gcc_cv_ld_ro_rw_mix=read-write - fi - fi - fi -changequote(,)dnl - rm -f conftest.* conftest[123].* -changequote([,])dnl -fi -if test x$gcc_cv_ld_ro_rw_mix = xread-write; then - AC_DEFINE(HAVE_LD_RO_RW_SECTION_MIXING, 1, - [Define if your linker links a mix of read-only - and read-write sections into a read-write section.]) -fi -AC_MSG_RESULT($gcc_cv_ld_ro_rw_mix) - AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support) gcc_cv_ld_eh_frame_hdr=no if test $in_tree_ld = yes ; then diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8370307aaaa..34257e582ec 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,14 @@ +2008-10-31 Jakub Jelinek <jakub@redhat.com> + + PR c++/37967 + * decl.c (grokdeclarator): Diagnose auto function decl without + late return type and late return type function decl where type + is not auto. + + PR c++/37965 + * decl.c (cp_finish_decl): Diagnose type_uses_auto type with + no initializer. + 2008-10-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org> PR 11492 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index c9cac551a55..754f433c30a 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -5488,11 +5488,20 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, DECL_INITIALIZED_IN_CLASS_P (decl) = 1; auto_node = type_uses_auto (type); - if (auto_node && !type_dependent_expression_p (init)) + if (auto_node) { - type = TREE_TYPE (decl) = do_auto_deduction (type, init, auto_node); - if (type == error_mark_node) - return; + if (init == NULL_TREE) + { + error ("declaration of %q#D has no initializer", decl); + TREE_TYPE (decl) = error_mark_node; + return; + } + else if (!type_dependent_expression_p (init)) + { + type = TREE_TYPE (decl) = do_auto_deduction (type, init, auto_node); + if (type == error_mark_node) + return; + } } if (processing_template_decl) @@ -8228,16 +8237,40 @@ grokdeclarator (const cp_declarator *declarator, /* Pick up the exception specifications. */ raises = declarator->u.function.exception_specification; + /* Say it's a definition only for the CALL_EXPR + closest to the identifier. */ + funcdecl_p = inner_declarator && inner_declarator->kind == cdk_id; + /* Handle a late-specified return type. */ + if (funcdecl_p) + { + if (type_uses_auto (type)) + { + if (!declarator->u.function.late_return_type) + { + error ("%qs function uses auto type specifier without" + " late return type", name); + return error_mark_node; + } + else if (!is_auto (type)) + { + error ("%qs function with late return type not using" + " auto type specifier as its type", name); + return error_mark_node; + } + } + else if (declarator->u.function.late_return_type) + { + error ("%qs function with late return type not declared" + " with auto type specifier", name); + return error_mark_node; + } + } type = splice_late_return_type (type, declarator->u.function.late_return_type); if (type == error_mark_node) return error_mark_node; - /* Say it's a definition only for the CALL_EXPR - closest to the identifier. */ - funcdecl_p = inner_declarator && inner_declarator->kind == cdk_id; - if (ctype == NULL_TREE && decl_context == FIELD && funcdecl_p diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6ebb660f62c..ec83b16b59c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,129 @@ +2008-11-03 Tobias Burnus <burnus@net-b.de> + + PR fortran/37821 + * cpp.c (gfc_cpp_add_include_path): Use BRACKET. + * scanner.c (add_path_to_list): Argument to add at head. + (gfc_add_include_path): Add new argument. + (gfc_add_intrinsic_modules_path) Update call. + (load_file): Print filename/line in the error message. + * gfortran.h (gfc_add_include_path): Update prototype. + * options.c (gfc_post_options,gfc_handle_module_path_options, + gfc_handle_option): Update call. + * lang-spec.h (F951_OPTIONS): Don't insert include path twice. + + * arith.c (arith_error): Add -fno-range-error to the message. + +2008-11-03 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/37445 + * resolve.c (resolve_actual_arglist ): Correct comparison of + FL_VARIABLE with e->expr_type. + (resolve_call): Check that host association is correct. + (resolve_actual_arglist ): Remove return is old_sym is use + associated. Only reparse expression if old and new symbols + have different types. + + PR fortran/PR35769 + * resolve.c (gfc_resolve_assign_in_forall): Change error to a + warning. + +2008-11-01 Janus Weil <janus@gcc.gnu.org> + + PR fortran/36426 + * expr.c (replace_symbol): Replace all symbols which lie in the + formal namespace of the interface and copy their attributes. + * resolve.c (resolve_symbol): Add charlen to namespace. + +2008-11-01 Steven G. Kargl <kargls@comcast.net> + + PR fortran/19925 + * trans-array.c (gfc_trans_array_constructor_value): Fix comment. + (gfc_conv_array_initializer): Convert internal_error() to gfc_error_now. + * array.c: Remove GFC_MAX_AC_EXPAND macro. + (gfc_expand_constructor): Use gfc_option.flag_max_array_constructor. + * gfortran.h (gfc_option): Add flag_max_array_constructor member. + * lang.opt: Add -fmax-array-constructor option. + * expr.c (gfc_match_init_expr): Fix error message to mention new option. + * invoke.texi: Document new option. + * options.c (gfc_init_options): Set default value for new option. + (gfc_handle_option): Deal with commandline. + +2008-11-01 Daniel Kraft <d@domob.eu> + + PR fortran/35681 + * gfortran.h (struct gfc_code): New field `resolved_isym'. + * trans.h (gfc_build_memcpy_call): Made public. + * trans-array.h (gfc_trans_create_temp_array): New argument `initial'. + * intrinsic.c (gfc_intrinsic_sub_interface): Set resolved_isym. + * iresolve.c (create_formal_for_intents): New helper method. + (gfc_resolve_mvbits): Put dummy formal arglist on resolved_sym. + * resolve.c (resolve_call): Initialize resolved_isym to NULL. + * trans-array.c (gfc_trans_allocate_array_storage): New argument + `initial' to allow initializing the allocated storage to some initial + value copied from another array. + (gfc_trans_create_temp_array): Allow initialization of the temporary + with a copy of some other array by using the new extension. + (gfc_trans_array_constructor): Pass NULL_TREE for initial argument. + (gfc_conv_loop_setup): Ditto. + * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): Ditto. + * trans-expr.c (gfc_conv_function_call): Ditto. + (gfc_build_memcpy_call): Made public. + * trans-stmt.c (gfc_conv_elemental_dependencies): Initialize created + temporary for INTENT(INOUT) arguments to the value of the mirrored + array and clean up the temporary as very last intructions in the created + block. + * trans.c (gfc_trans_code): For EXEC_CALL, see if we have a MVBITS call + and enable elemental dependency checking if we have. + +2008-11-01 Janus Weil <janus@gcc.gnu.org> + + PR fortran/36322 + PR fortran/36463 + * gfortran.h: New function gfc_expr_replace_symbols. + * decl.c (match_procedure_decl): Increase reference count for interface. + * expr.c: New functions replace_symbol and gfc_expr_replace_symbols. + * resolve.c (resolve_symbol): Correctly copy array spec and char len + of PROCEDURE declarations from their interface. + * symbol.c (gfc_get_default_type): Enhanced error message. + (copy_formal_args): Call copy_formal_args recursively for arguments. + * trans-expr.c (gfc_conv_function_call): Bugfix. + +2008-11-01 Dennis Wassel <dennis.wassel@gmail.com> + + PR fortran/37159 + * fortran/check.c (gfc_check_random_seed): Check PUT size + at compile time. + +2008-10-31 Mikael Morin <mikael.morin@tele2.fr> + + PR fortran/35840 + * expr.c (gfc_reduce_init_expr): New function, containing checking code + from gfc_match_init_expr, so that checking can be deferred. + (gfc_match_init_expr): Use gfc_reduce_init_expr. + * io.c (check_io_constraints): Use gfc_reduce_init_expr instead of + checking that the expression is a constant. + * match.h (gfc_reduce_init_expr): Prototype added. + +2008-10-31 Mikael Morin <mikael.morin@tele2.fr> + + PR fortran/35820 + * resolve.c (gfc_count_forall_iterators): New function. + (gfc_resolve_forall): Use gfc_count_forall_iterators to evaluate + the needed memory amount to allocate. Don't forget to free allocated + memory. Add an assertion to check for memory leaks. + +2008-10-30 Steven G. Kargl <kargls@comcast.net> + + PR fortran/37930 + * fortran/arith.c (gfc_mpfr_to_mpz): Test for NaN and Inf values. + Remove stale comment and kludge code for MPFR 2.0.1 and older. + (gfc_real2int): Error on conversion of NaN or Inf. + (gfc_complex2int): Ditto. + * fortran/arith.h: Update mpfr_to_mpz prototype. + * fortran/simplify.c (gfc_simplify_ceiling, gfc_simplify_floor, + gfc_simplify_ifix, gfc_simplify_idint, simplify_nint): Update function + calls to include locus. + 2008-10-30 Mikael Morin <mikael.morin@tele2.fr> PR fortran/37903 diff --git a/gcc/fortran/arith.c b/gcc/fortran/arith.c index 34780b6fe03..c56be036e2f 100644 --- a/gcc/fortran/arith.c +++ b/gcc/fortran/arith.c @@ -35,15 +35,19 @@ along with GCC; see the file COPYING3. If not see It's easily implemented with a few calls though. */ void -gfc_mpfr_to_mpz (mpz_t z, mpfr_t x) +gfc_mpfr_to_mpz (mpz_t z, mpfr_t x, locus *where) { mp_exp_t e; + if (mpfr_inf_p (x) || mpfr_nan_p (x)) + { + gfc_error ("Conversion of an Infinity or Not-a-Number at %L " + "to INTEGER", where); + mpz_set_ui (z, 0); + return; + } + e = mpfr_get_z_exp (z, x); - /* MPFR 2.0.1 (included with GMP 4.1) has a bug whereby mpfr_get_z_exp - may set the sign of z incorrectly. Work around that here. */ - if (mpfr_sgn (x) != mpz_sgn (z)) - mpz_neg (z, z); if (e > 0) mpz_mul_2exp (z, z, e); @@ -2061,11 +2065,13 @@ arith_error (arith rc, gfc_typespec *from, gfc_typespec *to, locus *where) gfc_typename (from), gfc_typename (to), where); break; case ARITH_UNDERFLOW: - gfc_error ("Arithmetic underflow converting %s to %s at %L", + gfc_error ("Arithmetic underflow converting %s to %s at %L. This check " + "can be disabled with the option -fno-range-check", gfc_typename (from), gfc_typename (to), where); break; case ARITH_NAN: - gfc_error ("Arithmetic NaN converting %s to %s at %L", + gfc_error ("Arithmetic NaN converting %s to %s at %L. This check " + "can be disabled with the option -fno-range-check", gfc_typename (from), gfc_typename (to), where); break; case ARITH_DIV0: @@ -2177,7 +2183,7 @@ gfc_real2int (gfc_expr *src, int kind) result = gfc_constant_result (BT_INTEGER, kind, &src->where); - gfc_mpfr_to_mpz (result->value.integer, src->value.real); + gfc_mpfr_to_mpz (result->value.integer, src->value.real, &src->where); if ((rc = gfc_check_integer_range (result->value.integer, kind)) != ARITH_OK) { @@ -2263,7 +2269,7 @@ gfc_complex2int (gfc_expr *src, int kind) result = gfc_constant_result (BT_INTEGER, kind, &src->where); - gfc_mpfr_to_mpz (result->value.integer, src->value.complex.r); + gfc_mpfr_to_mpz (result->value.integer, src->value.complex.r, &src->where); if ((rc = gfc_check_integer_range (result->value.integer, kind)) != ARITH_OK) { diff --git a/gcc/fortran/arith.h b/gcc/fortran/arith.h index e27186ae92f..344bc78d481 100644 --- a/gcc/fortran/arith.h +++ b/gcc/fortran/arith.h @@ -27,7 +27,7 @@ along with GCC; see the file COPYING3. If not see /* MPFR also does not have the conversion of a mpfr_t to a mpz_t, so declare a function for this as well. */ -void gfc_mpfr_to_mpz (mpz_t, mpfr_t); +void gfc_mpfr_to_mpz (mpz_t, mpfr_t, locus *); void gfc_set_model_kind (int); void gfc_set_model (mpfr_t); diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c index 70cf66294da..fe83ec685f9 100644 --- a/gcc/fortran/array.c +++ b/gcc/fortran/array.c @@ -24,13 +24,6 @@ along with GCC; see the file COPYING3. If not see #include "gfortran.h" #include "match.h" -/* This parameter is the size of the largest array constructor that we - will expand to an array constructor without iterators. - Constructors larger than this will remain in the iterator form. */ - -#define GFC_MAX_AC_EXPAND 65535 - - /**************** Array reference matching subroutines *****************/ /* Copy an array reference structure. */ @@ -1463,7 +1456,7 @@ gfc_expand_constructor (gfc_expr *e) gfc_expr *f; gfc_try rc; - f = gfc_get_array_element (e, GFC_MAX_AC_EXPAND); + f = gfc_get_array_element (e, gfc_option.flag_max_array_constructor); if (f != NULL) { gfc_free_expr (f); diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 1f9ce2fff6a..de507676491 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -3120,9 +3120,16 @@ gfc_check_random_number (gfc_expr *harvest) gfc_try gfc_check_random_seed (gfc_expr *size, gfc_expr *put, gfc_expr *get) { - unsigned int nargs = 0; + unsigned int nargs = 0, kiss_size; locus *where = NULL; + mpz_t put_size; + bool have_gfc_real_16; /* Try and mimic HAVE_GFC_REAL_16 in libgfortran. */ + have_gfc_real_16 = gfc_validate_kind (BT_REAL, 16, true) != -1; + + /* Keep these values in sync with kiss_size in libgfortran/random.c. */ + kiss_size = have_gfc_real_16 ? 12 : 8; + if (size != NULL) { if (size->expr_type != EXPR_VARIABLE @@ -3162,6 +3169,12 @@ gfc_check_random_seed (gfc_expr *size, gfc_expr *put, gfc_expr *get) if (kind_value_check (put, 1, gfc_default_integer_kind) == FAILURE) return FAILURE; + + if (gfc_array_size (put, &put_size) == SUCCESS + && mpz_get_ui (put_size) < kiss_size) + gfc_error ("Array PUT of intrinsic %s is too small (%i/%i) at %L", + gfc_current_intrinsic, (int) mpz_get_ui (put_size), + kiss_size, where); } if (get != NULL) diff --git a/gcc/fortran/cpp.c b/gcc/fortran/cpp.c index 86e0335dc9f..51c8e8507cf 100644 --- a/gcc/fortran/cpp.c +++ b/gcc/fortran/cpp.c @@ -628,10 +628,9 @@ gfc_cpp_add_include_path (char *path, bool user_supplied) { /* CHAIN sets cpp_dir->sysp which differs from 0 if PATH is a system include path. Fortran does not define any system include paths. */ - int chain = 0; int cxx_aware = 0; - add_path (path, chain, cxx_aware, user_supplied); + add_path (path, BRACKET, cxx_aware, user_supplied); } void diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 370ac10b3a9..fe044c7c698 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -4125,6 +4125,7 @@ match_procedure_decl (void) /* Various interface checks. */ if (proc_if) { + proc_if->refs++; /* Resolve interface if possible. That way, attr.procedure is only set if it is declared by a later procedure-declaration-stmt, which is invalid per C1212. */ diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 73f2c40a36c..ea766537a50 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -2378,21 +2378,15 @@ check_init_expr (gfc_expr *e) return t; } +/* Reduces a general expression to an initialization expression (a constant). + This used to be part of gfc_match_init_expr. + Note that this function doesn't free the given expression on FAILURE. */ -/* Match an initialization expression. We work by first matching an - expression, then reducing it to a constant. */ - -match -gfc_match_init_expr (gfc_expr **result) +gfc_try +gfc_reduce_init_expr (gfc_expr *expr) { - gfc_expr *expr; - match m; gfc_try t; - m = gfc_match_expr (&expr); - if (m != MATCH_YES) - return m; - gfc_init_expr = 1; t = gfc_resolve_expr (expr); if (t == SUCCESS) @@ -2400,18 +2394,12 @@ gfc_match_init_expr (gfc_expr **result) gfc_init_expr = 0; if (t == FAILURE) - { - gfc_free_expr (expr); - return MATCH_ERROR; - } + return FAILURE; if (expr->expr_type == EXPR_ARRAY && (gfc_check_constructor_type (expr) == FAILURE - || gfc_expand_constructor (expr) == FAILURE)) - { - gfc_free_expr (expr); - return MATCH_ERROR; - } + || gfc_expand_constructor (expr) == FAILURE)) + return FAILURE; /* Not all inquiry functions are simplified to constant expressions so it is necessary to call check_inquiry again. */ @@ -2419,6 +2407,33 @@ gfc_match_init_expr (gfc_expr **result) && !gfc_in_match_data ()) { gfc_error ("Initialization expression didn't reduce %C"); + return FAILURE; + } + + return SUCCESS; +} + + +/* Match an initialization expression. We work by first matching an + expression, then reducing it to a constant. */ + +match +gfc_match_init_expr (gfc_expr **result) +{ + gfc_expr *expr; + match m; + gfc_try t; + + expr = NULL; + + m = gfc_match_expr (&expr); + if (m != MATCH_YES) + return m; + + t = gfc_reduce_init_expr (expr); + if (t != SUCCESS) + { + gfc_free_expr (expr); return MATCH_ERROR; } @@ -3487,3 +3502,27 @@ gfc_expr_check_typed (gfc_expr* e, gfc_namespace* ns, bool strict) return error_found ? FAILURE : SUCCESS; } + +/* Walk an expression tree and replace all symbols with a corresponding symbol + in the formal_ns of "sym". Needed for copying interfaces in PROCEDURE + statements. The boolean return value is required by gfc_traverse_expr. */ + +static bool +replace_symbol (gfc_expr *expr, gfc_symbol *sym, int *i ATTRIBUTE_UNUSED) +{ + if ((expr->expr_type == EXPR_VARIABLE || expr->expr_type == EXPR_FUNCTION) + && expr->symtree->n.sym->ns == sym->ts.interface->formal_ns) + { + gfc_symtree *stree; + gfc_get_sym_tree (expr->symtree->name, sym->formal_ns, &stree); + stree->n.sym->attr = expr->symtree->n.sym->attr; + expr->symtree = stree; + } + return false; +} + +void +gfc_expr_replace_symbols (gfc_expr *expr, gfc_symbol *dest) +{ + gfc_traverse_expr (expr, dest, &replace_symbol, 0); +} diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index 42f5516b746..174e9af042c 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -1886,6 +1886,7 @@ typedef struct gfc_code symbol for the interface definition. const char *sub_name; */ gfc_symbol *resolved_sym; + gfc_intrinsic_sym *resolved_isym; union { @@ -1991,6 +1992,7 @@ typedef struct int flag_second_underscore; int flag_implicit_none; int flag_max_stack_var_size; + int flag_max_array_constructor; int flag_range_check; int flag_pack_derived; int flag_repack_arrays; @@ -2091,7 +2093,7 @@ bool gfc_in_match_data (void); void gfc_scanner_done_1 (void); void gfc_scanner_init_1 (void); -void gfc_add_include_path (const char *, bool); +void gfc_add_include_path (const char *, bool, bool); void gfc_add_intrinsic_modules_path (const char *); void gfc_release_include_path (void); FILE *gfc_open_included_file (const char *, bool, bool); @@ -2448,8 +2450,8 @@ bool gfc_traverse_expr (gfc_expr *, gfc_symbol *, bool (*)(gfc_expr *, gfc_symbol *, int*), int); void gfc_expr_set_symbols_referenced (gfc_expr *); - gfc_try gfc_expr_check_typed (gfc_expr*, gfc_namespace*, bool); +void gfc_expr_replace_symbols (gfc_expr *, gfc_symbol *); /* st.c */ extern gfc_code new_st; diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index 7acdcb05e60..1864785a318 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -3746,6 +3746,7 @@ gfc_intrinsic_sub_interface (gfc_code *c, int error_flag) if (!error_flag) gfc_pop_suppress_errors (); + c->resolved_isym = isym; if (isym->resolve.s1 != NULL) isym->resolve.s1 (c); else diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 2f6f4b0f9a4..8e47df4f684 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -148,7 +148,8 @@ and warnings}. @item Directory Options @xref{Directory Options,,Options for directory search}. -@gccoptlist{-I@var{dir} -J@var{dir} -M@var{dir} -fintrinsic-modules-path @var{dir}} +@gccoptlist{-I@var{dir} -J@var{dir} -M@var{dir} @gol +-fintrinsic-modules-path @var{dir}} @item Link Options @xref{Link Options,,Options for influencing the linking step}. @@ -162,9 +163,10 @@ and warnings}. @item Code Generation Options @xref{Code Gen Options,,Options for code generation conventions}. -@gccoptlist{-fno-automatic -ff2c -fno-underscoring +@gccoptlist{-fno-automatic -ff2c -fno-underscoring @gol -fsecond-underscore @gol --fbounds-check -fcheck-array-temporaries -fmax-stack-var-size=@var{n} @gol +-fbounds-check -fcheck-array-temporaries -fmax-array-constructor =@var{n} @gol +-fmax-stack-var-size=@var{n} @gol -fpack-derived -frepack-arrays -fshort-enums -fexternal-blas @gol -fblas-matmul-limit=@var{n} -frecursive -finit-local-zero @gol -finit-integer=@var{n} -finit-real=@var{<zero|inf|-inf|nan>} @gol @@ -1191,6 +1193,28 @@ sometimes useful in optimization, in order to avoid such temporaries. Note: The warning is only printed once per location. +@item -fmax-array-constructor=@var{n} +@opindex @code{fmax-array-constructor} +This option can be used to increase the upper limit permitted in +array constructors. The code below requires this option to expand +the array at compile time. + +@smallexample +@code{program test} +@code{implicit none} +@code{integer j} +@code{integer, parameter :: n = 100000} +@code{integer, parameter :: i(n) = (/ (2*j, j = 1, n) /)} +@code{print '(10(I0,1X))', i} +@code{end program test} +@end smallexample + +@emph{Caution: This option can lead to long compile times and excessively +large object files.} + +The default value for @var{n} is 65535. + + @item -fmax-stack-var-size=@var{n} @opindex @code{fmax-stack-var-size} This option specifies the size in bytes of the largest array that will be put diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index fb5ef3e4d46..cb89eddbe16 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -2973,7 +2973,7 @@ if (condition) \ { static const char * asynchronous[] = { "YES", "NO", NULL }; - if (dt->asynchronous->expr_type != EXPR_CONSTANT) + if (gfc_reduce_init_expr (dt->asynchronous) != SUCCESS) { gfc_error ("ASYNCHRONOUS= specifier at %L must be an initialization " "expression", &dt->asynchronous->where); diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c index f447ba279cf..619d7e9546a 100644 --- a/gcc/fortran/iresolve.c +++ b/gcc/fortran/iresolve.c @@ -2608,9 +2608,43 @@ gfc_resolve_cpu_time (gfc_code *c) } +/* Create a formal arglist based on an actual one and set the INTENTs given. */ + +static gfc_formal_arglist* +create_formal_for_intents (gfc_actual_arglist* actual, const sym_intent* ints) +{ + gfc_formal_arglist* head; + gfc_formal_arglist* tail; + int i; + + if (!actual) + return NULL; + + head = tail = gfc_get_formal_arglist (); + for (i = 0; actual; actual = actual->next, tail = tail->next, ++i) + { + gfc_symbol* sym; + + sym = gfc_new_symbol ("dummyarg", NULL); + sym->ts = actual->expr->ts; + + sym->attr.intent = ints[i]; + tail->sym = sym; + + if (actual->next) + tail->next = gfc_get_formal_arglist (); + } + + return head; +} + + void gfc_resolve_mvbits (gfc_code *c) { + static const sym_intent INTENTS[] = {INTENT_IN, INTENT_IN, INTENT_IN, + INTENT_INOUT, INTENT_IN}; + const char *name; gfc_typespec ts; gfc_clear_ts (&ts); @@ -2632,6 +2666,10 @@ gfc_resolve_mvbits (gfc_code *c) c->resolved_sym = gfc_get_intrinsic_sub_symbol (name); /* Mark as elemental subroutine as this does not happen automatically. */ c->resolved_sym->attr.elemental = 1; + + /* Create a dummy formal arglist so the INTENTs are known later for purpose + of creating temporaries. */ + c->resolved_sym->formal = create_formal_for_intents (c->ext.actual, INTENTS); } diff --git a/gcc/fortran/lang-specs.h b/gcc/fortran/lang-specs.h index e4bd0509c8b..a766162a5c8 100644 --- a/gcc/fortran/lang-specs.h +++ b/gcc/fortran/lang-specs.h @@ -23,7 +23,7 @@ #define F951_CPP_OPTIONS "%{!nocpp: -cpp %g.f90 %(cpp_options)\ %{E|M|MM:%(cpp_debug_options) -fsyntax-only} %{E}}" -#define F951_OPTIONS "%(cc1_options) %{J*} %{I*}\ +#define F951_OPTIONS "%(cc1_options) %{J*} %{!cpp: %{I*}}\ %{!nostdinc:-fintrinsic-modules-path finclude%s}\ %{!fsyntax-only:%(invoke_as)}" #define F951_SOURCE_FORM "%{!ffree-form:-ffixed-form}" diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index 49055f38e5b..04682c19118 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt @@ -284,6 +284,10 @@ finit-real= Fortran RejectNegative Joined -finit-real=<zero|nan|inf|-inf> Initialize local real variables +fmax-array-constructor= +Fortran RejectNegative Joined UInteger +-fmax-array-constructor=<n> Maximum number of objects in an array constructor + fmax-errors= Fortran RejectNegative Joined UInteger -fmax-errors=<n> Maximum number of errors to report diff --git a/gcc/fortran/match.h b/gcc/fortran/match.h index ff9e8a8d174..81bf4213289 100644 --- a/gcc/fortran/match.h +++ b/gcc/fortran/match.h @@ -199,6 +199,7 @@ match gfc_match_literal_constant (gfc_expr **, int); /* expr.c -- FIXME: this one should be eliminated by moving the matcher to matchexp.c and a call to a new function in expr.c that only makes sure the init expr. is valid. */ +gfc_try gfc_reduce_init_expr (gfc_expr *expr); match gfc_match_init_expr (gfc_expr **); /* array.c. */ diff --git a/gcc/fortran/options.c b/gcc/fortran/options.c index e84b3b15370..7a800ce8c66 100644 --- a/gcc/fortran/options.c +++ b/gcc/fortran/options.c @@ -65,6 +65,7 @@ gfc_init_options (unsigned int argc, const char **argv) gfc_option.max_continue_free = 255; gfc_option.max_identifier_length = GFC_MAX_SYMBOL_LEN; gfc_option.max_subrecord_length = 0; + gfc_option.flag_max_array_constructor = 65535; gfc_option.convert = GFC_CONVERT_NATIVE; gfc_option.record_marker = 0; gfc_option.dump_parse_tree = 0; @@ -264,10 +265,10 @@ gfc_post_options (const char **pfilename) source_path = (char *) alloca (i + 1); memcpy (source_path, canon_source_file, i); source_path[i] = 0; - gfc_add_include_path (source_path, true); + gfc_add_include_path (source_path, true, true); } else - gfc_add_include_path (".", true); + gfc_add_include_path (".", true, true); if (canon_source_file != gfc_source_file) gfc_free (CONST_CAST (char *, canon_source_file)); @@ -406,7 +407,7 @@ gfc_handle_module_path_options (const char *arg) strcpy (gfc_option.module_dir, arg); strcat (gfc_option.module_dir, "/"); - gfc_add_include_path (gfc_option.module_dir, true); + gfc_add_include_path (gfc_option.module_dir, true, false); } @@ -638,10 +639,14 @@ gfc_handle_option (size_t scode, const char *arg, int value) break; case OPT_fintrinsic_modules_path: - gfc_add_include_path (arg, false); + gfc_add_include_path (arg, false, false); gfc_add_intrinsic_modules_path (arg); break; + case OPT_fmax_array_constructor_: + gfc_option.flag_max_array_constructor = value > 65535 ? value : 65535; + break; + case OPT_fmax_errors_: gfc_option.max_errors = value; break; @@ -739,7 +744,7 @@ gfc_handle_option (size_t scode, const char *arg, int value) break; case OPT_I: - gfc_add_include_path (arg, true); + gfc_add_include_path (arg, true, false); break; case OPT_J: diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 1816907c3ec..4774b0bdb96 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -1105,7 +1105,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, procedure_type ptype, continue; } - if (e->expr_type == FL_VARIABLE + if (e->expr_type == EXPR_VARIABLE && e->symtree->n.sym->attr.generic && no_formal_args && count_specific_procs (e) != 1) @@ -2857,7 +2857,7 @@ resolve_call (gfc_code *c) { gfc_try t; procedure_type ptype = PROC_INTRINSIC; - gfc_symbol *csym; + gfc_symbol *csym, *sym; bool no_formal_args; csym = c->symtree ? c->symtree->n.sym : NULL; @@ -2869,6 +2869,20 @@ resolve_call (gfc_code *c) return FAILURE; } + if (csym && gfc_current_ns->parent && csym->ns != gfc_current_ns) + { + gfc_find_symbol (csym->name, gfc_current_ns, 1, &sym); + if (sym && csym != sym + && sym->ns == gfc_current_ns + && sym->attr.flavor == FL_PROCEDURE + && sym->attr.contained) + { + sym->refs++; + csym = sym; + c->symtree->n.sym = sym; + } + } + /* If external, check for usage. */ if (csym && is_external_proc (csym)) resolve_global_procedure (csym, &c->loc, 1); @@ -2913,23 +2927,26 @@ resolve_call (gfc_code *c) t = SUCCESS; if (c->resolved_sym == NULL) - switch (procedure_kind (csym)) - { - case PTYPE_GENERIC: - t = resolve_generic_s (c); - break; + { + c->resolved_isym = NULL; + switch (procedure_kind (csym)) + { + case PTYPE_GENERIC: + t = resolve_generic_s (c); + break; - case PTYPE_SPECIFIC: - t = resolve_specific_s (c); - break; + case PTYPE_SPECIFIC: + t = resolve_specific_s (c); + break; - case PTYPE_UNKNOWN: - t = resolve_unknown_s (c); - break; + case PTYPE_UNKNOWN: + t = resolve_unknown_s (c); + break; - default: - gfc_internal_error ("resolve_subroutine(): bad function type"); - } + default: + gfc_internal_error ("resolve_subroutine(): bad function type"); + } + } /* Some checks of elemental subroutine actual arguments. */ if (resolve_elemental_actual (NULL, c) == FAILURE) @@ -4245,14 +4262,12 @@ check_host_association (gfc_expr *e) old_sym = e->symtree->n.sym; - if (old_sym->attr.use_assoc) - return retval; - if (gfc_current_ns->parent && old_sym->ns != gfc_current_ns) { gfc_find_symbol (old_sym->name, gfc_current_ns, 1, &sym); if (sym && old_sym != sym + && sym->ts.type == old_sym->ts.type && sym->attr.flavor == FL_PROCEDURE && sym->attr.contained) { @@ -6114,12 +6129,14 @@ gfc_resolve_assign_in_forall (gfc_code *code, int nvar, gfc_expr **var_expr) else { /* If one of the FORALL index variables doesn't appear in the - assignment target, then there will be a many-to-one - assignment. */ + assignment variable, then there could be a many-to-one + assignment. Emit a warning rather than an error because the + mask could be resolving this problem. */ if (find_forall_index (code->expr, forall_index, 0) == FAILURE) - gfc_error ("The FORALL with index '%s' cause more than one " - "assignment to this object at %L", - var_expr[n]->symtree->name, &code->expr->where); + gfc_warning ("The FORALL with index '%s' is not used on the " + "left side of the assignment at %L and so might " + "cause multiple assignment to this object", + var_expr[n]->symtree->name, &code->expr->where); } } } @@ -6215,6 +6232,40 @@ gfc_resolve_forall_body (gfc_code *code, int nvar, gfc_expr **var_expr) } +/* Counts the number of iterators needed inside a forall construct, including + nested forall constructs. This is used to allocate the needed memory + in gfc_resolve_forall. */ + +static int +gfc_count_forall_iterators (gfc_code *code) +{ + int max_iters, sub_iters, current_iters; + gfc_forall_iterator *fa; + + gcc_assert(code->op == EXEC_FORALL); + max_iters = 0; + current_iters = 0; + + for (fa = code->ext.forall_iterator; fa; fa = fa->next) + current_iters ++; + + code = code->block->next; + + while (code) + { + if (code->op == EXEC_FORALL) + { + sub_iters = gfc_count_forall_iterators (code); + if (sub_iters > max_iters) + max_iters = sub_iters; + } + code = code->next; + } + + return current_iters + max_iters; +} + + /* Given a FORALL construct, first resolve the FORALL iterator, then call gfc_resolve_forall_body to resolve the FORALL body. */ @@ -6224,22 +6275,18 @@ gfc_resolve_forall (gfc_code *code, gfc_namespace *ns, int forall_save) static gfc_expr **var_expr; static int total_var = 0; static int nvar = 0; + int old_nvar, tmp; gfc_forall_iterator *fa; - gfc_code *next; int i; + old_nvar = nvar; + /* Start to resolve a FORALL construct */ if (forall_save == 0) { /* Count the total number of FORALL index in the nested FORALL - construct in order to allocate the VAR_EXPR with proper size. */ - next = code; - while ((next != NULL) && (next->op == EXEC_FORALL)) - { - for (fa = next->ext.forall_iterator; fa; fa = fa->next) - total_var ++; - next = next->block->next; - } + construct in order to allocate the VAR_EXPR with proper size. */ + total_var = gfc_count_forall_iterators (code); /* Allocate VAR_EXPR with NUMBER_OF_FORALL_INDEX elements. */ var_expr = (gfc_expr **) gfc_getmem (total_var * sizeof (gfc_expr *)); @@ -6264,6 +6311,9 @@ gfc_resolve_forall (gfc_code *code, gfc_namespace *ns, int forall_save) var_expr[nvar] = gfc_copy_expr (fa->var); nvar++; + + /* No memory leak. */ + gcc_assert (nvar <= total_var); } /* Resolve the FORALL body. */ @@ -6272,13 +6322,21 @@ gfc_resolve_forall (gfc_code *code, gfc_namespace *ns, int forall_save) /* May call gfc_resolve_forall to resolve the inner FORALL loop. */ gfc_resolve_blocks (code->block, ns); - /* Free VAR_EXPR after the whole FORALL construct resolved. */ - for (i = 0; i < total_var; i++) - gfc_free_expr (var_expr[i]); + tmp = nvar; + nvar = old_nvar; + /* Free only the VAR_EXPRs allocated in this frame. */ + for (i = nvar; i < tmp; i++) + gfc_free_expr (var_expr[i]); + + if (nvar == 0) + { + /* We are in the outermost FORALL construct. */ + gcc_assert (forall_save == 0); - /* Reset the counters. */ - total_var = 0; - nvar = 0; + /* VAR_EXPR is not needed any more. */ + gfc_free (var_expr); + total_var = 0; + } } @@ -8876,8 +8934,32 @@ resolve_symbol (gfc_symbol *sym) sym->attr.dimension = ifc->attr.dimension; sym->attr.recursive = ifc->attr.recursive; sym->attr.always_explicit = ifc->attr.always_explicit; - sym->as = gfc_copy_array_spec (ifc->as); copy_formal_args (sym, ifc); + /* Copy array spec. */ + sym->as = gfc_copy_array_spec (ifc->as); + if (sym->as) + { + int i; + for (i = 0; i < sym->as->rank; i++) + { + gfc_expr_replace_symbols (sym->as->lower[i], sym); + gfc_expr_replace_symbols (sym->as->upper[i], sym); + } + } + /* Copy char length. */ + if (ifc->ts.cl) + { + sym->ts.cl = gfc_get_charlen(); + sym->ts.cl->resolved = ifc->ts.cl->resolved; + sym->ts.cl->length = gfc_copy_expr (ifc->ts.cl->length); + gfc_expr_replace_symbols (sym->ts.cl->length, sym); + /* Add charlen to namespace. */ + if (sym->formal_ns) + { + sym->ts.cl->next = sym->formal_ns->cl_list; + sym->formal_ns->cl_list = sym->ts.cl; + } + } } else if (sym->ts.interface->name[0] != '\0') { diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c index 8c702ca3f33..c45827f08a1 100644 --- a/gcc/fortran/scanner.c +++ b/gcc/fortran/scanner.c @@ -307,7 +307,7 @@ gfc_scanner_done_1 (void) static void add_path_to_list (gfc_directorylist **list, const char *path, - bool use_for_modules) + bool use_for_modules, bool head) { gfc_directorylist *dir; const char *p; @@ -317,11 +317,15 @@ add_path_to_list (gfc_directorylist **list, const char *path, if (*p++ == '\0') return; - dir = *list; - if (!dir) - dir = *list = XCNEW (gfc_directorylist); + if (head || *list == NULL) + { + dir = XCNEW (gfc_directorylist); + if (!head) + *list = dir; + } else { + dir = *list; while (dir->next) dir = dir->next; @@ -329,7 +333,9 @@ add_path_to_list (gfc_directorylist **list, const char *path, dir = dir->next; } - dir->next = NULL; + dir->next = head ? *list : NULL; + if (head) + *list = dir; dir->use_for_modules = use_for_modules; dir->path = XCNEWVEC (char, strlen (p) + 2); strcpy (dir->path, p); @@ -338,17 +344,20 @@ add_path_to_list (gfc_directorylist **list, const char *path, void -gfc_add_include_path (const char *path, bool use_for_modules) +gfc_add_include_path (const char *path, bool use_for_modules, bool file_dir) { - add_path_to_list (&include_dirs, path, use_for_modules); - gfc_cpp_add_include_path (xstrdup(path), true); + add_path_to_list (&include_dirs, path, use_for_modules, file_dir); + + /* For '#include "..."' these directories are automatically searched. */ + if (!file_dir) + gfc_cpp_add_include_path (xstrdup(path), true); } void gfc_add_intrinsic_modules_path (const char *path) { - add_path_to_list (&intrinsic_modules_dirs, path, true); + add_path_to_list (&intrinsic_modules_dirs, path, true, false); } @@ -1767,7 +1776,9 @@ load_file (const char *realfilename, const char *displayedname, bool initial) for (f = current_file; f; f = f->up) if (strcmp (filename, f->filename) == 0) { - gfc_error_now ("File '%s' is being included recursively", filename); + fprintf (stderr, "%s:%d: Error: File '%s' is being included " + "recursively\n", current_file->filename, current_file->line, + filename); return FAILURE; } @@ -1791,7 +1802,8 @@ load_file (const char *realfilename, const char *displayedname, bool initial) input = gfc_open_included_file (realfilename, false, false); if (input == NULL) { - gfc_error_now ("Can't open included file '%s'", filename); + fprintf (stderr, "%s:%d: Error: Can't open included file '%s'\n", + current_file->filename, current_file->line, filename); return FAILURE; } } diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index c5327940e9e..49a4affd3c3 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -808,7 +808,7 @@ gfc_simplify_ceiling (gfc_expr *e, gfc_expr *k) ceil = gfc_copy_expr (e); mpfr_ceil (ceil->value.real, e->value.real); - gfc_mpfr_to_mpz (result->value.integer, ceil->value.real); + gfc_mpfr_to_mpz (result->value.integer, ceil->value.real, &e->where); gfc_free_expr (ceil); @@ -1341,7 +1341,7 @@ gfc_simplify_floor (gfc_expr *e, gfc_expr *k) mpfr_init (floor); mpfr_floor (floor, e->value.real); - gfc_mpfr_to_mpz (result->value.integer, floor); + gfc_mpfr_to_mpz (result->value.integer, floor, &e->where); mpfr_clear (floor); @@ -1925,7 +1925,7 @@ gfc_simplify_ifix (gfc_expr *e) rtrunc = gfc_copy_expr (e); mpfr_trunc (rtrunc->value.real, e->value.real); - gfc_mpfr_to_mpz (result->value.integer, rtrunc->value.real); + gfc_mpfr_to_mpz (result->value.integer, rtrunc->value.real, &e->where); gfc_free_expr (rtrunc); return range_check (result, "IFIX"); @@ -1946,7 +1946,7 @@ gfc_simplify_idint (gfc_expr *e) rtrunc = gfc_copy_expr (e); mpfr_trunc (rtrunc->value.real, e->value.real); - gfc_mpfr_to_mpz (result->value.integer, rtrunc->value.real); + gfc_mpfr_to_mpz (result->value.integer, rtrunc->value.real, &e->where); gfc_free_expr (rtrunc); return range_check (result, "IDINT"); @@ -2969,7 +2969,7 @@ simplify_nint (const char *name, gfc_expr *e, gfc_expr *k) mpfr_round (itrunc->value.real, e->value.real); - gfc_mpfr_to_mpz (result->value.integer, itrunc->value.real); + gfc_mpfr_to_mpz (result->value.integer, itrunc->value.real, &e->where); gfc_free_expr (itrunc); diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index 42df574ebcc..bf66ac8986b 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -219,7 +219,7 @@ gfc_get_default_type (gfc_symbol *sym, gfc_namespace *ns) "implicitly typed variables"); if (letter < 'a' || letter > 'z') - gfc_internal_error ("gfc_get_default_type(): Bad symbol"); + gfc_internal_error ("gfc_get_default_type(): Bad symbol '%s'",sym->name); if (ns == NULL) ns = gfc_current_ns; @@ -3790,6 +3790,7 @@ copy_formal_args (gfc_symbol *dest, gfc_symbol *src) formal_arg->sym->attr = curr_arg->sym->attr; formal_arg->sym->ts = curr_arg->sym->ts; formal_arg->sym->as = gfc_copy_array_spec (curr_arg->sym->as); + copy_formal_args (formal_arg->sym, curr_arg->sym); /* If this isn't the first arg, set up the next ptr. For the last arg built, the formal_arg->next will never get set to diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 5080e0fa5cc..218c401af80 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -493,14 +493,17 @@ gfc_set_loop_bounds_from_array_spec (gfc_interface_mapping * mapping, callee will allocate the array. If DEALLOC is true, also generate code to free the array afterwards. + If INITIAL is not NULL, it is packed using internal_pack and the result used + as data instead of allocating a fresh, unitialized area of memory. + Initialization code is added to PRE and finalization code to POST. DYNAMIC is true if the caller may want to extend the array later using realloc. This prevents us from putting the array on the stack. */ static void gfc_trans_allocate_array_storage (stmtblock_t * pre, stmtblock_t * post, - gfc_ss_info * info, tree size, tree nelem, - bool dynamic, bool dealloc) + gfc_ss_info * info, tree size, tree nelem, + tree initial, bool dynamic, bool dealloc) { tree tmp; tree desc; @@ -517,7 +520,8 @@ gfc_trans_allocate_array_storage (stmtblock_t * pre, stmtblock_t * post, else { /* Allocate the temporary. */ - onstack = !dynamic && gfc_can_put_var_on_stack (size); + onstack = !dynamic && initial == NULL_TREE + && gfc_can_put_var_on_stack (size); if (onstack) { @@ -534,9 +538,53 @@ gfc_trans_allocate_array_storage (stmtblock_t * pre, stmtblock_t * post, } else { - /* Allocate memory to hold the data. */ - tmp = gfc_call_malloc (pre, NULL, size); - tmp = gfc_evaluate_now (tmp, pre); + /* Allocate memory to hold the data or call internal_pack. */ + if (initial == NULL_TREE) + { + tmp = gfc_call_malloc (pre, NULL, size); + tmp = gfc_evaluate_now (tmp, pre); + } + else + { + tree packed; + tree source_data; + tree was_packed; + stmtblock_t do_copying; + + tmp = TREE_TYPE (initial); /* Pointer to descriptor. */ + gcc_assert (TREE_CODE (tmp) == POINTER_TYPE); + tmp = TREE_TYPE (tmp); /* The descriptor itself. */ + tmp = gfc_get_element_type (tmp); + gcc_assert (tmp == gfc_get_element_type (TREE_TYPE (desc))); + packed = gfc_create_var (build_pointer_type (tmp), "data"); + + tmp = build_call_expr (gfor_fndecl_in_pack, 1, initial); + tmp = fold_convert (TREE_TYPE (packed), tmp); + gfc_add_modify (pre, packed, tmp); + + tmp = build_fold_indirect_ref (initial); + source_data = gfc_conv_descriptor_data_get (tmp); + + /* internal_pack may return source->data without any allocation + or copying if it is already packed. If that's the case, we + need to allocate and copy manually. */ + + gfc_start_block (&do_copying); + tmp = gfc_call_malloc (&do_copying, NULL, size); + tmp = fold_convert (TREE_TYPE (packed), tmp); + gfc_add_modify (&do_copying, packed, tmp); + tmp = gfc_build_memcpy_call (packed, source_data, size); + gfc_add_expr_to_block (&do_copying, tmp); + + was_packed = fold_build2 (EQ_EXPR, boolean_type_node, + packed, source_data); + tmp = gfc_finish_block (&do_copying); + tmp = build3_v (COND_EXPR, was_packed, tmp, build_empty_stmt ()); + gfc_add_expr_to_block (pre, tmp); + + tmp = fold_convert (pvoid_type_node, packed); + } + gfc_conv_descriptor_data_set (pre, desc, tmp); } } @@ -567,14 +615,15 @@ gfc_trans_allocate_array_storage (stmtblock_t * pre, stmtblock_t * post, fields of info if known. Returns the size of the array, or NULL for a callee allocated array. - PRE, POST, DYNAMIC and DEALLOC are as for gfc_trans_allocate_array_storage. + PRE, POST, INITIAL, DYNAMIC and DEALLOC are as for + gfc_trans_allocate_array_storage. */ tree gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post, gfc_loopinfo * loop, gfc_ss_info * info, - tree eltype, bool dynamic, bool dealloc, - bool callee_alloc, locus * where) + tree eltype, tree initial, bool dynamic, + bool dealloc, bool callee_alloc, locus * where) { tree type; tree desc; @@ -600,8 +649,8 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post, else { /* Callee allocated arrays may not have a known bound yet. */ - if (loop->to[n]) - loop->to[n] = fold_build2 (MINUS_EXPR, gfc_array_index_type, + if (loop->to[n]) + loop->to[n] = fold_build2 (MINUS_EXPR, gfc_array_index_type, loop->to[n], loop->from[n]); loop->from[n] = gfc_index_zero_node; } @@ -635,7 +684,7 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post, { stride[n] = size delta = ubound[n] + 1 - lbound[n]; - size = size * delta; + size = size * delta; } size = size * sizeof(element); */ @@ -654,17 +703,17 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post, for (n = 0; n < info->dimen; n++) { if (size == NULL_TREE) - { + { /* For a callee allocated array express the loop bounds in terms of the descriptor fields. */ - tmp = + tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type, gfc_conv_descriptor_ubound (desc, gfc_rank_cst[n]), gfc_conv_descriptor_lbound (desc, gfc_rank_cst[n])); - loop->to[n] = tmp; - continue; - } - + loop->to[n] = tmp; + continue; + } + /* Store the stride and bound components in the descriptor. */ tmp = gfc_conv_descriptor_stride (desc, gfc_rank_cst[n]); gfc_add_modify (pre, tmp, size); @@ -712,8 +761,8 @@ gfc_trans_create_temp_array (stmtblock_t * pre, stmtblock_t * post, size = NULL_TREE; } - gfc_trans_allocate_array_storage (pre, post, info, size, nelem, dynamic, - dealloc); + gfc_trans_allocate_array_storage (pre, post, info, size, nelem, initial, + dynamic, dealloc); if (info->dimen > loop->temp_dim) loop->temp_dim = info->dimen; @@ -1254,7 +1303,7 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type, } } - /* The frontend should already have done any expansions possible + /* The frontend should already have done any expansions at compile-time. */ if (!c->iterator) { @@ -1811,7 +1860,7 @@ gfc_trans_array_constructor (gfc_loopinfo * loop, gfc_ss * ss, locus * where) } gfc_trans_create_temp_array (&loop->pre, &loop->post, loop, &ss->data.info, - type, dynamic, true, false, where); + type, NULL_TREE, dynamic, true, false, where); desc = ss->data.info.descriptor; offset = gfc_index_zero_node; @@ -3523,8 +3572,8 @@ gfc_conv_loop_setup (gfc_loopinfo * loop, locus * where) loop->temp_ss->type = GFC_SS_SECTION; loop->temp_ss->data.info.dimen = n; gfc_trans_create_temp_array (&loop->pre, &loop->post, loop, - &loop->temp_ss->data.info, tmp, false, true, - false, where); + &loop->temp_ss->data.info, tmp, NULL_TREE, + false, true, false, where); } for (n = 0; n < loop->temp_dim; n++) @@ -3897,10 +3946,13 @@ gfc_conv_array_initializer (tree type, gfc_expr * expr) if (c->iterator) { /* Problems occur when we get something like - integer :: a(lots) = (/(i, i=1,lots)/) */ - /* TODO: Unexpanded array initializers. */ - internal_error - ("Possible frontend bug: array constructor not expanded"); + integer :: a(lots) = (/(i, i=1, lots)/) */ + gfc_error_now ("The number of elements in the array constructor " + "at %L requires an increase of the allowed %d " + "upper limit. See -fmax-array-constructor " + "option", &expr->where, + gfc_option.flag_max_array_constructor); + return NULL_TREE; } if (mpz_cmp_si (c->n.offset, 0) != 0) index = gfc_conv_mpz_to_tree (c->n.offset, gfc_index_integer_kind); diff --git a/gcc/fortran/trans-array.h b/gcc/fortran/trans-array.h index 2cc9d5caf28..49818d4fe6d 100644 --- a/gcc/fortran/trans-array.h +++ b/gcc/fortran/trans-array.h @@ -32,7 +32,7 @@ void gfc_set_loop_bounds_from_array_spec (gfc_interface_mapping *, /* Generate code to create a temporary array. */ tree gfc_trans_create_temp_array (stmtblock_t *, stmtblock_t *, gfc_loopinfo *, - gfc_ss_info *, tree, bool, bool, bool, + gfc_ss_info *, tree, tree, bool, bool, bool, locus *); /* Generate function entry code for allocation of compiler allocated array diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index e0f2f77cd59..a3265ace756 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -2716,7 +2716,8 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, && parmse.string_length == NULL_TREE && e->ts.type == BT_PROCEDURE && e->symtree->n.sym->ts.type == BT_CHARACTER - && e->symtree->n.sym->ts.cl->length != NULL) + && e->symtree->n.sym->ts.cl->length != NULL + && e->symtree->n.sym->ts.cl->length->expr_type == EXPR_CONSTANT) { gfc_conv_const_charlen (e->symtree->n.sym->ts.cl); parmse.string_length = e->symtree->n.sym->ts.cl->backend_decl; @@ -2862,8 +2863,8 @@ gfc_conv_function_call (gfc_se * se, gfc_symbol * sym, mustn't be deallocated. */ callee_alloc = sym->attr.allocatable || sym->attr.pointer; gfc_trans_create_temp_array (&se->pre, &se->post, se->loop, info, tmp, - false, !sym->attr.pointer, callee_alloc, - &se->ss->expr->where); + NULL_TREE, false, !sym->attr.pointer, + callee_alloc, &se->ss->expr->where); /* Pass the temporary as the first argument. */ tmp = info->descriptor; @@ -4383,7 +4384,7 @@ gfc_trans_zero_assign (gfc_expr * expr) /* Helper for gfc_trans_array_copy and gfc_trans_array_constructor_copy that constructs the call to __builtin_memcpy. */ -static tree +tree gfc_build_memcpy_call (tree dst, tree src, tree len) { tree tmp; diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index ffe1e5b913e..acf0b73a760 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -3787,7 +3787,7 @@ gfc_conv_intrinsic_array_transfer (gfc_se * se, gfc_expr * expr) FIXME callee_alloc is not set! */ gfc_trans_create_temp_array (&se->pre, &se->post, se->loop, - info, mold_type, false, true, false, + info, mold_type, NULL_TREE, false, true, false, &expr->where); /* Cast the pointer to the result. */ diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index da227523e72..343d5359d28 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -251,6 +251,9 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse, && gfc_check_fncall_dependency (e, fsym->attr.intent, sym, arg0)) { + tree initial; + stmtblock_t temp_post; + /* Make a local loopinfo for the temporary creation, so that none of the other ss->info's have to be renormalized. */ gfc_init_loopinfo (&tmp_loop); @@ -261,27 +264,38 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse, tmp_loop.order[n] = loopse->loop->order[n]; } + /* Obtain the argument descriptor for unpacking. */ + gfc_init_se (&parmse, NULL); + parmse.want_pointer = 1; + gfc_conv_expr_descriptor (&parmse, e, gfc_walk_expr (e)); + gfc_add_block_to_block (&se->pre, &parmse.pre); + + /* If we've got INTENT(INOUT), initialize the array temporary with + a copy of the values. */ + if (fsym->attr.intent == INTENT_INOUT) + initial = parmse.expr; + else + initial = NULL_TREE; + /* Generate the temporary. Merge the block so that the - declarations are put at the right binding level. */ + declarations are put at the right binding level. Cleaning up the + temporary should be the very last thing done, so we add the code to + a new block and add it to se->post as last instructions. */ size = gfc_create_var (gfc_array_index_type, NULL); data = gfc_create_var (pvoid_type_node, NULL); gfc_start_block (&block); + gfc_init_block (&temp_post); tmp = gfc_typenode_for_spec (&e->ts); - tmp = gfc_trans_create_temp_array (&se->pre, &se->post, - &tmp_loop, info, tmp, - false, true, false, - & arg->expr->where); + tmp = gfc_trans_create_temp_array (&se->pre, &temp_post, + &tmp_loop, info, tmp, + initial, + false, true, false, + &arg->expr->where); gfc_add_modify (&se->pre, size, tmp); tmp = fold_convert (pvoid_type_node, info->data); gfc_add_modify (&se->pre, data, tmp); gfc_merge_block_scope (&block); - /* Obtain the argument descriptor for unpacking. */ - gfc_init_se (&parmse, NULL); - parmse.want_pointer = 1; - gfc_conv_expr_descriptor (&parmse, e, gfc_walk_expr (e)); - gfc_add_block_to_block (&se->pre, &parmse.pre); - /* Calculate the offset for the temporary. */ offset = gfc_index_zero_node; for (n = 0; n < info->dimen; n++) @@ -296,11 +310,16 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse, info->offset = gfc_create_var (gfc_array_index_type, NULL); gfc_add_modify (&se->pre, info->offset, offset); + /* Copy the result back using unpack. */ tmp = build_call_expr (gfor_fndecl_in_unpack, 2, parmse.expr, data); gfc_add_expr_to_block (&se->post, tmp); + /* XXX: This is possibly not needed; but isn't it cleaner this way? */ + gfc_add_block_to_block (&se->pre, &parmse.pre); + gfc_add_block_to_block (&se->post, &parmse.post); + gfc_add_block_to_block (&se->post, &temp_post); } } } @@ -367,7 +386,7 @@ gfc_trans_call (gfc_code * code, bool dependency_check) gfc_se loopse; /* gfc_walk_elemental_function_args renders the ss chain in the - reverse order to the actual argument order. */ + reverse order to the actual argument order. */ ss = gfc_reverse_ss (ss); /* Initialize the loop. */ diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index b8f0d2dd35b..628c2a08346 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -1102,7 +1102,15 @@ gfc_trans_code (gfc_code * code) break; case EXEC_CALL: - res = gfc_trans_call (code, false); + /* For MVBITS we've got the special exception that we need a + dependency check, too. */ + { + bool is_mvbits = false; + if (code->resolved_isym + && code->resolved_isym->id == GFC_ISYM_MVBITS) + is_mvbits = true; + res = gfc_trans_call (code, is_mvbits); + } break; case EXEC_ASSIGN_CALL: diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h index b3a0368160f..23d61ea04d9 100644 --- a/gcc/fortran/trans.h +++ b/gcc/fortran/trans.h @@ -464,6 +464,9 @@ tree gfc_call_free (tree); /* Allocate memory after performing a few checks. */ tree gfc_call_malloc (stmtblock_t *, tree, tree); +/* Build a memcpy call. */ +tree gfc_build_memcpy_call (tree, tree, tree); + /* Allocate memory for arrays, with optional status variable. */ tree gfc_allocate_array_with_status (stmtblock_t*, tree, tree, tree, gfc_expr*); diff --git a/gcc/gcc.h b/gcc/gcc.h index cf41efc7758..83d04bf43ec 100644 --- a/gcc/gcc.h +++ b/gcc/gcc.h @@ -51,7 +51,7 @@ struct spec_function || !strcmp (STR, "isysroot") \ || !strcmp (STR, "-param") || !strcmp (STR, "specs") \ || !strcmp (STR, "MF") || !strcmp (STR, "MT") || !strcmp (STR, "MQ") \ - || !strcmp (STR, "fintrinsic-modules-path")) + || !strcmp (STR, "fintrinsic-modules-path") || !strcmp (STR, "dumpbase")) /* These are exported by gcc.c. */ diff --git a/gcc/graphite.c b/gcc/graphite.c index a14dd141e3e..90d82301202 100644 --- a/gcc/graphite.c +++ b/gcc/graphite.c @@ -864,6 +864,33 @@ loop_affine_expr (basic_block scop_entry, struct loop *loop, tree expr) || evolution_function_is_affine_multivariate_p (scev, n)); } +/* Return false if the tree_code of the operand OP or any of its operands + is component_ref. */ + +static bool +exclude_component_ref (tree op) +{ + int i; + int len; + + if (op) + { + if (TREE_CODE (op) == COMPONENT_REF) + return false; + else + { + len = TREE_OPERAND_LENGTH (op); + for (i = 0; i < len; ++i) + { + if (!exclude_component_ref (TREE_OPERAND (op, i))) + return false; + } + } + } + + return true; +} + /* Return true if the operand OP is simple. */ static bool @@ -879,7 +906,7 @@ is_simple_operand (loop_p loop, gimple stmt, tree op) && !stmt_simple_memref_p (loop, stmt, op))) return false; - return true; + return exclude_component_ref (op); } /* Return true only when STMT is simple enough for being handled by diff --git a/gcc/passes.c b/gcc/passes.c index 8ff63b304f1..ed3afae2b3b 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -1336,6 +1336,7 @@ execute_one_pass (struct opt_pass *pass) if (initializing_dump && dump_file && graph_dump_format != no_graph + && cfun && (cfun->curr_properties & (PROP_cfg | PROP_rtl)) == (PROP_cfg | PROP_rtl)) { diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index b141127f647..238d68fa0e5 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,11 @@ +2008-11-02 Joseph S. Myers <joseph@codesourcery.com> + + * id.po: Update. + +2008-10-31 Joseph S. Myers <joseph@codesourcery.com> + + * id.po: Update. + 2008-10-29 Joseph S. Myers <joseph@codesourcery.com> * id.po: New. diff --git a/gcc/po/id.po b/gcc/po/id.po index 51c08f451a3..b7d6d41c197 100644 --- a/gcc/po/id.po +++ b/gcc/po/id.po @@ -3230,1885 +3230,1885 @@ msgstr "mode insn tidak diketahui" #: config/i386/xm-djgpp.h:61 #, c-format msgid "environment variable DJGPP not defined" -msgstr "" +msgstr "variabel lingkungan DJGPP tidak didefinisikan" #: config/i386/xm-djgpp.h:63 #, c-format msgid "environment variable DJGPP points to missing file '%s'" -msgstr "" +msgstr "variabel lingkungan DJGPP menunjuk ke berkas hilang '%s'" #: config/i386/xm-djgpp.h:66 #, c-format msgid "environment variable DJGPP points to corrupt file '%s'" -msgstr "" +msgstr "variabel lingkungan DJGPP menunjuk ke berkas terkorupsi '%s'" #: config/ia64/ia64.c:4771 #, c-format msgid "ia64_print_operand: unknown code" -msgstr "" +msgstr "ia64_print_operand: kode tidak diketahui" #: config/ia64/ia64.c:9890 msgid "invalid conversion from %<__fpreg%>" -msgstr "" +msgstr "konversi dari %<__fpreg%> tidak valid" #: config/ia64/ia64.c:9893 msgid "invalid conversion to %<__fpreg%>" -msgstr "" +msgstr "konversi ke %<__fpreg%> tidak valid" #: config/ia64/ia64.c:9906 config/ia64/ia64.c:9917 msgid "invalid operation on %<__fpreg%>" -msgstr "" +msgstr "operasi di %<__fpreg%> tidak valid" #: config/iq2000/iq2000.c:3122 #, c-format msgid "invalid %%P operand" -msgstr "" +msgstr "operan %%P tidak valid" #: config/iq2000/iq2000.c:3130 config/rs6000/rs6000.c:11818 #, c-format msgid "invalid %%p value" -msgstr "" +msgstr "nilai %%p tidak valid" #: config/iq2000/iq2000.c:3186 #, c-format msgid "invalid use of %%d, %%x, or %%X" -msgstr "" +msgstr "penggunaan dari %%d, %%x, atau %%X tidak valid" #: config/m32r/m32r.c:1775 #, c-format msgid "invalid operand to %%s code" -msgstr "" +msgstr "operan ke kode %%s tidak valid" #: config/m32r/m32r.c:1782 #, c-format msgid "invalid operand to %%p code" -msgstr "" +msgstr "operan ke kode %%p tidak valid" #: config/m32r/m32r.c:1837 msgid "bad insn for 'A'" -msgstr "" +msgstr "insn untuk 'A' buruk" #: config/m32r/m32r.c:1884 #, c-format msgid "invalid operand to %%T/%%B code" -msgstr "" +msgstr "operan ke kode %%T/%%B tidak valid" #: config/m32r/m32r.c:1907 #, c-format msgid "invalid operand to %%N code" -msgstr "" +msgstr "operan ke kode %%N tidak valid" #: config/m32r/m32r.c:1940 msgid "pre-increment address is not a register" -msgstr "" +msgstr "alamat pre-increment bukan sebuah register" #: config/m32r/m32r.c:1947 msgid "pre-decrement address is not a register" -msgstr "" +msgstr "alamat pre-decrement bukan sebuah register" #: config/m32r/m32r.c:1954 msgid "post-increment address is not a register" -msgstr "" +msgstr "alamat post-increment bukan sebuah register" #: config/m32r/m32r.c:2030 config/m32r/m32r.c:2044 #: config/rs6000/rs6000.c:20087 msgid "bad address" -msgstr "" +msgstr "alamat buruk" #: config/m32r/m32r.c:2049 msgid "lo_sum not of register" -msgstr "" +msgstr "lo_sum bukan register" #. !!!! SCz wrong here. #: config/m68hc11/m68hc11.c:3189 config/m68hc11/m68hc11.c:3567 msgid "move insn not handled" -msgstr "" +msgstr "move insn tidak tertangani" #: config/m68hc11/m68hc11.c:3413 config/m68hc11/m68hc11.c:3497 #: config/m68hc11/m68hc11.c:3770 msgid "invalid register in the move instruction" -msgstr "" +msgstr "register tidak valid dalam instruksi move" #: config/m68hc11/m68hc11.c:3447 msgid "invalid operand in the instruction" -msgstr "" +msgstr "operan tidak valid dalam instruksi" #: config/m68hc11/m68hc11.c:3744 msgid "invalid register in the instruction" -msgstr "" +msgstr "register tidak valid dalam instruksi" #: config/m68hc11/m68hc11.c:3777 msgid "operand 1 must be a hard register" -msgstr "" +msgstr "operan 1 harus berupa sebuah hard register" #: config/m68hc11/m68hc11.c:3791 msgid "invalid rotate insn" -msgstr "" +msgstr "insn rotasi tidak valid" #: config/m68hc11/m68hc11.c:4215 msgid "registers IX, IY and Z used in the same INSN" -msgstr "" +msgstr "register IX, IY dan Z digunakan dalam INSN yang sama" #: config/m68hc11/m68hc11.c:4548 config/m68hc11/m68hc11.c:4848 msgid "cannot do z-register replacement" -msgstr "" +msgstr "tidak dapat melakukan penggantian z-register" #: config/m68hc11/m68hc11.c:4911 msgid "invalid Z register replacement for insn" -msgstr "" +msgstr "penggantian register Z tidak valid untuk insn" #: config/mips/mips.c:6371 config/mips/mips.c:6392 config/mips/mips.c:6496 #, c-format msgid "'%%%c' is not a valid operand prefix" -msgstr "" +msgstr "'%%%c' bukan sebuah awalan operan yang valid" #: config/mips/mips.c:6440 config/mips/mips.c:6447 config/mips/mips.c:6454 #: config/mips/mips.c:6514 #, c-format msgid "invalid use of '%%%c'" -msgstr "" +msgstr "penggunaan dari '%%%c' tidak valid" #: config/mips/mips.c:6761 msgid "mips_debugger_offset called with non stack/frame/arg pointer" -msgstr "" +msgstr "mips_debugger_offset dipanggil dengan penunjuk bukan stack/frame/arg" #: config/mmix/mmix.c:1483 config/mmix/mmix.c:1613 msgid "MMIX Internal: Expected a CONST_INT, not this" -msgstr "" +msgstr "MMIX Internal: Diduga sebuah CONST_INT, bukan ini" #: config/mmix/mmix.c:1562 msgid "MMIX Internal: Bad value for 'm', not a CONST_INT" -msgstr "" +msgstr "MMIX Internal: Nilai buruk untuk 'm', bukan sebuah CONST_INT" #: config/mmix/mmix.c:1581 msgid "MMIX Internal: Expected a register, not this" -msgstr "" +msgstr "MMIX Internal: Diduga sebuah register, bukan ini" #: config/mmix/mmix.c:1591 msgid "MMIX Internal: Expected a constant, not this" -msgstr "" +msgstr "MMIX Internal: Diduga sebuah konstanta, bukan ini" #. We need the original here. #: config/mmix/mmix.c:1675 msgid "MMIX Internal: Cannot decode this operand" -msgstr "" +msgstr "MMIX Internal: Tidak dapat dekode operan ini" #: config/mmix/mmix.c:1732 msgid "MMIX Internal: This is not a recognized address" -msgstr "" +msgstr "MMIX Internal: Inibukan alamat yang dikenal" #: config/mmix/mmix.c:2665 msgid "MMIX Internal: Trying to output invalidly reversed condition:" -msgstr "" +msgstr "MMIX Internal: mencoba untuk mengeluarkan kondisi terbalik secara tidak valid:" #: config/mmix/mmix.c:2672 msgid "MMIX Internal: What's the CC of this?" -msgstr "" +msgstr "MMIX Internal: Apa CC dari ini?" #: config/mmix/mmix.c:2676 msgid "MMIX Internal: What is the CC of this?" -msgstr "" +msgstr "MMIX Internal: Apa CC dari ini?" #: config/mmix/mmix.c:2740 msgid "MMIX Internal: This is not a constant:" -msgstr "" +msgstr "MMIX Internal: Ini bukan sebuah konstanta:" #: config/mt/mt.c:299 msgid "mt_final_prescan_insn, invalid insn #1" -msgstr "" +msgstr "mt_final_prescan_insn, insn #1 tidak valid" #: config/mt/mt.c:370 msgid "PRINT_OPERAND_ADDRESS, 2 regs" -msgstr "" +msgstr "PRINT_OPERAND_ADDRESS, 2 regs" #: config/mt/mt.c:394 msgid "PRINT_OPERAND_ADDRESS, invalid insn #1" -msgstr "" +msgstr "PRINT_OPERAND_ADDRESS, insn #1 tidak valid" #: config/rs6000/host-darwin.c:96 #, c-format msgid "Out of stack space.\n" -msgstr "" +msgstr "Kehabisan ruang stack.\n" #: config/rs6000/host-darwin.c:117 #, c-format msgid "Try running '%s' in the shell to raise its limit.\n" -msgstr "" +msgstr "Mencoba menjalankan '%s' dalam shell untuk meningkatkan batasannya.\n" #: config/rs6000/rs6000.c:11645 #, c-format msgid "invalid %%f value" -msgstr "" +msgstr "nilai %%f tidak valid" #: config/rs6000/rs6000.c:11654 #, c-format msgid "invalid %%F value" -msgstr "" +msgstr "nilai %%F tidak valid" #: config/rs6000/rs6000.c:11663 #, c-format msgid "invalid %%G value" -msgstr "" +msgstr "nilai %%G tidak valid" #: config/rs6000/rs6000.c:11698 #, c-format msgid "invalid %%j code" -msgstr "" +msgstr "kode %%j tidak valid" #: config/rs6000/rs6000.c:11708 #, c-format msgid "invalid %%J code" -msgstr "" +msgstr "kode %%J tidak valid" #: config/rs6000/rs6000.c:11718 #, c-format msgid "invalid %%k value" -msgstr "" +msgstr "nilai %%k tidak valid" #: config/rs6000/rs6000.c:11738 config/xtensa/xtensa.c:2028 #, c-format msgid "invalid %%K value" -msgstr "" +msgstr "nilai %%K tidak valid" #: config/rs6000/rs6000.c:11808 #, c-format msgid "invalid %%O value" -msgstr "" +msgstr "nilai %%O tidak valid" #: config/rs6000/rs6000.c:11855 #, c-format msgid "invalid %%q value" -msgstr "" +msgstr "nilai %%q tidak valid" #: config/rs6000/rs6000.c:11899 #, c-format msgid "invalid %%S value" -msgstr "" +msgstr "nilai %%S tidak valid" #: config/rs6000/rs6000.c:11939 #, c-format msgid "invalid %%T value" -msgstr "" +msgstr "nilai %%T tidak valid" #: config/rs6000/rs6000.c:11949 #, c-format msgid "invalid %%u value" -msgstr "" +msgstr "nilai %%u tidak valid" #: config/rs6000/rs6000.c:11958 config/xtensa/xtensa.c:1998 #, c-format msgid "invalid %%v value" -msgstr "" +msgstr "nilai %%v tidak valid" #: config/rs6000/rs6000.c:21946 msgid "AltiVec argument passed to unprototyped function" -msgstr "" +msgstr "Argumen AltiVec dilewatkan ke fungsi yang tidak berprototipe" #: config/s390/s390.c:4560 #, c-format msgid "cannot decompose address" -msgstr "" +msgstr "tidak dapat menguraikan alamat" #: config/s390/s390.c:4770 msgid "UNKNOWN in print_operand !?" -msgstr "" +msgstr "TIDAK DIKETAHUI dalam print_operand !?" #: config/score/score3.c:1262 config/score/score3.c:1282 #: config/score/score7.c:1253 #, c-format msgid "invalid operand for code: '%c'" -msgstr "" +msgstr "operan tidak valid untuk kode: '%c'" #: config/sh/sh.c:749 #, c-format msgid "invalid operand to %%R" -msgstr "" +msgstr "operan tidak valid ke %%R" #: config/sh/sh.c:776 #, c-format msgid "invalid operand to %%S" -msgstr "" +msgstr "operan tidak valid ke %%S" #: config/sh/sh.c:8098 msgid "created and used with different architectures / ABIs" -msgstr "" +msgstr "dibuat dan digunakan dengan arsitektur berbeda / ABI" #: config/sh/sh.c:8100 msgid "created and used with different ABIs" -msgstr "" +msgstr "dibuat dan digunakan dengan ABI berbeda" #: config/sh/sh.c:8102 msgid "created and used with different endianness" -msgstr "" +msgstr "dibuat dan digunakan dengan endianness berbeda" #: config/sparc/sparc.c:6806 config/sparc/sparc.c:6812 #, c-format msgid "invalid %%Y operand" -msgstr "" +msgstr "operan %%Y tidak valid" #: config/sparc/sparc.c:6882 #, c-format msgid "invalid %%A operand" -msgstr "" +msgstr "operan %%A tidak valid" #: config/sparc/sparc.c:6892 #, c-format msgid "invalid %%B operand" -msgstr "" +msgstr "operan %%B tidak valid" #: config/sparc/sparc.c:6931 #, c-format msgid "invalid %%c operand" -msgstr "" +msgstr "operan %%c tidak valid" #: config/sparc/sparc.c:6953 #, c-format msgid "invalid %%d operand" -msgstr "" +msgstr "operan %%d tidak valid" #: config/sparc/sparc.c:6970 #, c-format msgid "invalid %%f operand" -msgstr "" +msgstr "operan %%f tidak valid" #: config/sparc/sparc.c:6984 #, c-format msgid "invalid %%s operand" -msgstr "" +msgstr "operan %%s tidak valid" #: config/sparc/sparc.c:7038 #, c-format msgid "long long constant not a valid immediate operand" -msgstr "" +msgstr "konstanta long long bukan sebuah operan langsung yang valid" #: config/sparc/sparc.c:7041 #, c-format msgid "floating point constant not a valid immediate operand" -msgstr "" +msgstr "konstanta titik pecahan bukan sebuah operan langsung yang valid" #: config/stormy16/stormy16.c:1748 config/stormy16/stormy16.c:1819 #, c-format msgid "'B' operand is not constant" -msgstr "" +msgstr "operan 'B' bukan sebuah konstanta" #: config/stormy16/stormy16.c:1775 #, c-format msgid "'B' operand has multiple bits set" -msgstr "" +msgstr "operan 'B' memiliki multiple bits set" #: config/stormy16/stormy16.c:1801 #, c-format msgid "'o' operand is not constant" -msgstr "" +msgstr "operan 'o' bukan sebuah konstanta" #: config/stormy16/stormy16.c:1833 #, c-format msgid "xstormy16_print_operand: unknown code" -msgstr "" +msgstr "xstormy16_print_operand: kode tidak diketahui" #: config/v850/v850.c:372 msgid "const_double_split got a bad insn:" -msgstr "" +msgstr "const_double_split memperoleh sebuah insn buruk:" #: config/v850/v850.c:936 msgid "output_move_single:" -msgstr "" +msgstr "output_move_single:" #: config/xtensa/xtensa.c:656 config/xtensa/xtensa.c:688 #: config/xtensa/xtensa.c:697 msgid "bad test" -msgstr "" +msgstr "tes buruk" #: config/xtensa/xtensa.c:1986 #, c-format msgid "invalid %%D value" -msgstr "" +msgstr "nilai %%D tidak valid" #: config/xtensa/xtensa.c:2023 msgid "invalid mask" -msgstr "" +msgstr "topeng tidak valid" #: config/xtensa/xtensa.c:2049 #, c-format msgid "invalid %%x value" -msgstr "" +msgstr "nilai %%x tidak valid" #: config/xtensa/xtensa.c:2056 #, c-format msgid "invalid %%d value" -msgstr "" +msgstr "nilai %%d tidak valid" #: config/xtensa/xtensa.c:2077 config/xtensa/xtensa.c:2087 #, c-format msgid "invalid %%t/%%b value" -msgstr "" +msgstr "nilai %%t/%%b tidak valid" #: config/xtensa/xtensa.c:2129 msgid "invalid address" -msgstr "" +msgstr "alamat tidak valid" #: config/xtensa/xtensa.c:2154 msgid "no register in address" -msgstr "" +msgstr "tidak ada register dalam alamat" #: config/xtensa/xtensa.c:2162 msgid "address offset not a constant" -msgstr "" +msgstr "ofset alamat bukan sebuah konstanta" #: cp/call.c:2500 msgid "candidates are:" -msgstr "" +msgstr "kandidat adalah:" #: cp/call.c:6487 msgid "candidate 1:" -msgstr "" +msgstr "kandidat 1:" #: cp/call.c:6488 msgid "candidate 2:" -msgstr "" +msgstr "kandidat 2:" #: cp/decl2.c:668 msgid "candidates are: %+#D" -msgstr "" +msgstr "kandidat adalah: %+#D" #: cp/decl2.c:670 msgid "candidate is: %+#D" -msgstr "" +msgstr "kandidat adalah: %+#D" #: cp/g++spec.c:251 java/jvspec.c:406 #, c-format msgid "argument to '%s' missing\n" -msgstr "" +msgstr "argumen ke '%s' hilang\n" #: fortran/arith.c:90 msgid "Arithmetic OK at %L" -msgstr "" +msgstr "Aritmetik OK di %L" #: fortran/arith.c:93 msgid "Arithmetic overflow at %L" -msgstr "" +msgstr "Aritmetik overflow di %L" #: fortran/arith.c:96 msgid "Arithmetic underflow at %L" -msgstr "" +msgstr "Aritmetik underflow di %L" #: fortran/arith.c:99 msgid "Arithmetic NaN at %L" -msgstr "" +msgstr "Aritmetik NaN di %L" #: fortran/arith.c:102 msgid "Division by zero at %L" -msgstr "" +msgstr "Pembagian dengan nol di %L" #: fortran/arith.c:105 msgid "Array operands are incommensurate at %L" -msgstr "" +msgstr "Operan array tidak komensurate di %L" #: fortran/arith.c:109 msgid "Integer outside symmetric range implied by Standard Fortran at %L" -msgstr "" +msgstr "Integer diluar jangkauan simetrik diimplikasikan oleh Standar Fortran di %L" #: fortran/arith.c:1472 msgid "elemental binary operation" -msgstr "" +msgstr "operasi binari elemen" #: fortran/arith.c:2044 #, no-c-format msgid "Arithmetic OK converting %s to %s at %L" -msgstr "" +msgstr "Aritmetik OK mengubah %s ke %s di %L" #: fortran/arith.c:2048 #, no-c-format msgid "Arithmetic overflow converting %s to %s at %L. This check can be disabled with the option -fno-range-check" -msgstr "" +msgstr "Aritmetik overflow mengubah %s ke %s di %L. Pemeriksaan ini dapat dinon-aktifkan dengan opsi -fno-range-check" #: fortran/arith.c:2053 #, no-c-format msgid "Arithmetic underflow converting %s to %s at %L" -msgstr "" +msgstr "Aritmetik underflow mengubah %s ke %s di %L" #: fortran/arith.c:2057 #, no-c-format msgid "Arithmetic NaN converting %s to %s at %L" -msgstr "" +msgstr "Aritmetik NaN mengubah %s ke %s di %L" #: fortran/arith.c:2061 #, no-c-format msgid "Division by zero converting %s to %s at %L" -msgstr "" +msgstr "Pembagian dengan nol mengubah %s ke %s di %L" #: fortran/arith.c:2065 #, no-c-format msgid "Array operands are incommensurate converting %s to %s at %L" -msgstr "" +msgstr "Operan array tidak komensurate mengubah %s ke %s di %L" #: fortran/arith.c:2069 #, no-c-format msgid "Integer outside symmetric range implied by Standard Fortran converting %s to %s at %L" -msgstr "" +msgstr "Integer diluar jangkauan simetrik diimplikasikan dengan Standar Fortran mengubah %s ke %s di %L" #: fortran/arith.c:2402 #, no-c-format msgid "The Hollerith constant at %L is too long to convert to %s" -msgstr "" +msgstr "Konstanta Hollerith di %L terlalu panjang mengubah ke %s" #: fortran/arith.c:2560 #, no-c-format msgid "Enumerator exceeds the C integer type at %C" -msgstr "" +msgstr "Enumerator melebihi tipe integer C di %C" #: fortran/array.c:97 #, no-c-format msgid "Expected array subscript at %C" -msgstr "" +msgstr "Diduga array subscript di %C" #: fortran/array.c:124 #, no-c-format msgid "Expected array subscript stride at %C" -msgstr "" +msgstr "Diduga array subscript stride di %C" #: fortran/array.c:167 #, no-c-format msgid "Invalid form of array reference at %C" -msgstr "" +msgstr "Format dari referensi array tidak valid di %C" #: fortran/array.c:172 #, no-c-format msgid "Array reference at %C cannot have more than %d dimensions" -msgstr "" +msgstr "Referensi array di %C tidak dapat memiliki lebih dari %d dimensi" #: fortran/array.c:223 #, no-c-format msgid "Variable '%s' at %L in this context must be constant" -msgstr "" +msgstr "Variabel '%s' di %L dalam konteks ini harus berupa konstanta" #: fortran/array.c:314 #, no-c-format msgid "Expected expression in array specification at %C" -msgstr "" +msgstr "Diduga ekspresi dalam spesifikasi array di %C" #: fortran/array.c:392 #, no-c-format msgid "Bad array specification for an explicitly shaped array at %C" -msgstr "" +msgstr "Spesifikasi array buruk untuk sebuah eksplisit shaped array di %C" #: fortran/array.c:402 #, no-c-format msgid "Bad array specification for assumed shape array at %C" -msgstr "" +msgstr "Spesifikasi array buruk untuk diasumsikan shape array di %C" #: fortran/array.c:416 #, no-c-format msgid "Bad specification for deferred shape array at %C" -msgstr "" +msgstr "Spesifikasi buruk untuk deferred shape array di %C" #: fortran/array.c:420 #, no-c-format msgid "Bad specification for assumed size array at %C" -msgstr "" +msgstr "Spesifikasi buruk untuk diasumsikan ukuran array di %C" #: fortran/array.c:429 #, no-c-format msgid "Expected another dimension in array declaration at %C" -msgstr "" +msgstr "Diduga dimensi lain dalam deklarasi array di %C" #: fortran/array.c:435 #, no-c-format msgid "Array specification at %C has more than %d dimensions" -msgstr "" +msgstr "Spesifikasi array di %C memiliki lebih dari %d dimensi" #: fortran/array.c:641 #, no-c-format msgid "duplicated initializer" -msgstr "" +msgstr "duplikasi penginisialisasi" #: fortran/array.c:733 #, no-c-format msgid "DO-iterator '%s' at %L is inside iterator of the same name" -msgstr "" +msgstr "DO-iterator '%s' di %L adalah didalam iterator dari nama yang sama" #: fortran/array.c:835 fortran/array.c:944 #, no-c-format msgid "Syntax error in array constructor at %C" -msgstr "" +msgstr "Sintaks error dalam konstruksi array di %C" #: fortran/array.c:890 #, no-c-format msgid "Fortran 2003: [...] style array constructors at %C" -msgstr "" +msgstr "Fortran 2003: [...] gaya array konstruktor di %C" #: fortran/array.c:904 #, no-c-format msgid "Empty array constructor at %C is not allowed" -msgstr "" +msgstr "Konstruktor array kosong di %C tidak diperbolehkan" #: fortran/array.c:988 #, no-c-format msgid "Element in %s array constructor at %L is %s" -msgstr "" +msgstr "Elemen dalam %s array konstruktor di %L adalah %s" #: fortran/array.c:1315 #, no-c-format msgid "Iterator step at %L cannot be zero" -msgstr "" +msgstr "Langkah iterasi di %L tidak dapat nol" #: fortran/check.c:44 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be a scalar" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa sebuah skalar" #: fortran/check.c:59 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be %s" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa %s" #: fortran/check.c:87 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be a numeric type" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa tipe numerik" #: fortran/check.c:101 fortran/check.c:810 fortran/check.c:820 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or REAL" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa INTEGER atau REAL" #: fortran/check.c:118 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be REAL or COMPLEX" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa REAL atau KOMPLEKS" #: fortran/check.c:147 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be a constant" -msgstr "" +msgstr "'%s' argumen dari '%s' instrinsik di %L harus berupa sebuah konstanta" #: fortran/check.c:156 #, no-c-format msgid "Invalid kind for %s at %L" -msgstr "" +msgstr "Jenis tidak valid untuk %s di %L" #: fortran/check.c:175 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be double precision" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa presisi ganda" #: fortran/check.c:192 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be a logical array" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa array logikal" #: fortran/check.c:210 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be an array" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa sebuah array" #: fortran/check.c:225 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be the same type and kind as '%s'" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa tipe yang sama dan jenis sebagai '%s'" #: fortran/check.c:241 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be of rank %d" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus dari tingkat %d" #: fortran/check.c:256 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must not be OPTIONAL" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L tidak boleh berupa OPSIONAL" #: fortran/check.c:275 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be of kind %d" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa jenis %d" #: fortran/check.c:297 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L cannot be INTENT(IN)" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L tidak dapat berupa INTENT(IN)" #: fortran/check.c:303 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be a variable" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa sebuah variabel" #: fortran/check.c:356 #, no-c-format msgid "'dim' argument of '%s' intrinsic at %L is not a valid dimension index" -msgstr "" +msgstr "'dim' argumen dari '%s' instrinsik di %L bukan sebuah indeks dimensi yang valid" #: fortran/check.c:426 #, no-c-format msgid "Unequal character lengths (%ld and %ld) in %s intrinsic at %L" -msgstr "" +msgstr "Panjang karakter tidak sama (%ld dan %ld) dalam %s intrinsik di %L" #: fortran/check.c:528 fortran/check.c:1932 fortran/check.c:1947 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa DAPAT-DIALOKASIKAN" #: fortran/check.c:552 fortran/check.c:3697 #, no-c-format msgid "'%s' and '%s' arguments of '%s' intrinsic at %L must have the same type" -msgstr "" +msgstr "'%s' dan '%s' argumen dari '%s' intrinsik di %L harus memiliki tipe yang sama" #: fortran/check.c:561 fortran/check.c:1137 fortran/check.c:1280 #: fortran/check.c:1354 fortran/check.c:1610 #, no-c-format msgid "Extension: Different type kinds at %L" -msgstr "" +msgstr "Ekstensi: Jenis tipe berbeda di %L" #: fortran/check.c:601 fortran/check.c:2016 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER" -msgstr "" +msgstr "'%s' argumen dari '%s' instrinsik di %L harus berupa sebuah PENUNJUK" #: fortran/check.c:621 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be a pointer or target VARIABLE or FUNCTION" -msgstr "" +msgstr "'%s' argumen dari '%s' instrinsik di %L harus berupa sebuah penunjuk atau target VARIABELatau FUNGSI" #: fortran/check.c:629 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER or a TARGET" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa sebuah PENUNJUK atau sebuah TARGET" #: fortran/check.c:645 #, no-c-format msgid "Array section with a vector subscript at %L shall not be the target of a pointer" -msgstr "" +msgstr "Bagian array dengan sebuah vektor subscript di %L tidak boleh menjadi target dari sebuah penunjuk" #: fortran/check.c:656 #, no-c-format msgid "NULL pointer at %L is not permitted as actual argument of '%s' intrinsic function" -msgstr "" +msgstr "Penunjuk KOSONG di %L tidak diijinkan sebagai argumen aktual dari '%s' fungsi intrinsik" #: fortran/check.c:791 fortran/check.c:910 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must not be present if 'x' is COMPLEX" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L tidak boleh ada jika 'x' adalah KOMPLEKS" #: fortran/check.c:841 fortran/check.c:1199 fortran/check.c:1302 #: fortran/check.c:1461 fortran/check.c:1478 fortran/check.c:2312 #: fortran/check.c:2438 fortran/check.c:2773 fortran/check.c:2815 #, no-c-format msgid "Fortran 2003: '%s' intrinsic with KIND argument at %L" -msgstr "" +msgstr "Fortran 2003: '%s' intrinsik dengan JENIS argumen di %L" #: fortran/check.c:959 fortran/check.c:1706 fortran/check.c:1714 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be numeric or LOGICAL" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa numerik atau LOGIKAL" #: fortran/check.c:973 #, no-c-format msgid "Different shape for arguments '%s' and '%s' at %L for intrinsic 'dot_product'" -msgstr "" +msgstr "Bentuk berbeda untuk argumen '%s' dan '%s' di %L untuk intrinsik 'dot_product'" #: fortran/check.c:992 fortran/check.c:1000 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be default real" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa baku nyata" #: fortran/check.c:1250 #, no-c-format msgid "Argument of %s at %L must be of length one" -msgstr "" +msgstr "Argumen dari %s di %L harus berupa panjang satu" #: fortran/check.c:1309 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be the same kind as '%s'" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa jenis sama dengan '%s'" #: fortran/check.c:1434 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be a non-derived type" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa tipe bukan-turunan" #: fortran/check.c:1583 #, no-c-format msgid "Intrinsic '%s' at %L must have at least two arguments" -msgstr "" +msgstr "Intrinsik '%s' di %L harus memiliki paling tidak dua argumen" #: fortran/check.c:1616 #, no-c-format msgid "'a%d' argument of '%s' intrinsic at %L must be %s(%d)" -msgstr "" +msgstr "'a%d' argumen dari '%s' intrinsik di %L harus berupa %s(%d)" #: fortran/check.c:1649 #, no-c-format msgid "Fortran 2003: '%s' intrinsic with CHARACTER argument at %L" -msgstr "" +msgstr "Fortran 2003: '%s' intrinsik dengan argumen KARAKTER di %L" #: fortran/check.c:1656 #, no-c-format msgid "'a1' argument of '%s' intrinsic at %L must be INTEGER, REAL or CHARACTER" -msgstr "" +msgstr "'a1' argumen dari '%s' intrinsik di %L harus berupa INTEGER, REAL, atau KARAKTER" #: fortran/check.c:1728 #, no-c-format msgid "Different shape on dimension 1 for arguments '%s' and '%s' at %L for intrinsic matmul" -msgstr "" +msgstr "Bentuk berbeda dalam dimensi 1 untuk argumen '%s' dan '%s' di %L untuk intrinsik matmul" #: fortran/check.c:1747 #, no-c-format msgid "Different shape on dimension 2 for argument '%s' and dimension 1 for argument '%s' at %L for intrinsic matmul" -msgstr "" +msgstr "Bentuk berbeda dalam dimensi 2 untuk argumen '%s' dan dimensi 1 untuk argumen '%s' di %L untuk intrinsik matmul" #: fortran/check.c:1756 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be of rank 1 or 2" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa tingkat 1 atau 2" #: fortran/check.c:1958 #, no-c-format msgid "the '%s' and '%s' arguments of '%s' intrinsic at %L must have the same rank %d/%d" -msgstr "" +msgstr "'%s' dan '%s' argumen dari '%s' intrinsik di %L harus memiliki tingkat yang sama %d/%d" #: fortran/check.c:1967 #, no-c-format msgid "the '%s' and '%s' arguments of '%s' intrinsic at %L must be of the same kind %d/%d" -msgstr "" +msgstr "'%s' dan '%s' argumen dari '%s' intrinsik di %L harus memiliki jenis sama %d/%d" #: fortran/check.c:2063 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be of type REAL or COMPLEX" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus memiliki tipe REAL atau KOMPLEKS" #: fortran/check.c:2084 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be of a dummy variable" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa sebuah variabel dummy" #: fortran/check.c:2092 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be of an OPTIONAL dummy variable" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa sebuah variabel dummy OPSIONAL" #: fortran/check.c:2108 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must not be a subobject of '%s'" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L tidak boleh berupa subobjek dari '%s'" #: fortran/check.c:2225 #, no-c-format msgid "'shape' argument of 'reshape' intrinsic at %L must be an array of constant size" -msgstr "" +msgstr "'shape' argumen dari 'reshape' intrinsik di %L harus berupa sebuah array dari konstantaukuran" #: fortran/check.c:2235 #, no-c-format msgid "'shape' argument of 'reshape' intrinsic at %L has more than %d elements" -msgstr "" +msgstr "'shape' argumen dari 'reshape' intrinsik di %L memiliki lebih dari %d elemen" #: fortran/check.c:2273 #, no-c-format msgid "Without padding, there are not enough elements in the intrinsic RESHAPE source at %L to match the shape" -msgstr "" +msgstr "Tanpa padding, disana tidak cukup elemen dalam sumber intrinsik RESHAPE di %L untuk cocok dengan shape" #: fortran/check.c:2358 #, no-c-format msgid "Missing arguments to %s intrinsic at %L" -msgstr "" +msgstr "Hilang argumen ke %s intrinsik di %L" #: fortran/check.c:2399 #, no-c-format msgid "'source' argument of 'shape' intrinsic at %L must not be an assumed size array" -msgstr "" +msgstr "'source' argumen dari 'shape' intrinsik di %L tidak boleh sebuah ukuran arrayyang diasumsikan" #: fortran/check.c:2473 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be less than rank %d" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus lebih kecil dari tingkat %d" #: fortran/check.c:2725 #, no-c-format msgid "'MOLD' argument of 'TRANSFER' intrinsic at %L must not be %s" -msgstr "" +msgstr "'MOLD' argumen dari 'TRANSFER' intrinsik di %L tidak boleh berupa %s" #: fortran/check.c:3044 #, no-c-format msgid "Too many arguments to %s at %L" -msgstr "" +msgstr "Terlalu banyak argumen ke %s di %L" #: fortran/check.c:3156 fortran/check.c:3610 fortran/check.c:3634 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or PROCEDURE" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa INTEGER atau PROSEDUR" #: fortran/check.c:3332 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be of a kind not wider than the default kind (%d)" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa sebuah jenis tidak lebih lebar dari jenis baku (%d)" #: fortran/check.c:3681 fortran/check.c:3689 #, no-c-format msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or LOGICAL" -msgstr "" +msgstr "'%s' argumen dari '%s' intrinsik di %L harus berupa INTEGER atau LOGIKAL" #: fortran/data.c:64 #, no-c-format msgid "non-constant array in DATA statement %L" -msgstr "" +msgstr "bukan-konstanta array dalam pernyataan DATA %L" #: fortran/data.c:193 #, no-c-format msgid "failure to simplify substring reference in DATA statement at %L" -msgstr "" +msgstr "gagal untuk menyederhanakan referensi substring dalam laporan DATA di %L" #: fortran/data.c:224 #, no-c-format msgid "initialization string truncated to match variable at %L" -msgstr "" +msgstr "inisialisasi dari string terpotong untuk mencocokan dengan variabel di %L" #: fortran/data.c:293 #, no-c-format msgid "'%s' at %L already is initialized at %L" -msgstr "" +msgstr "'%s' di %L telah terinisialisasi di %L" #: fortran/data.c:317 #, no-c-format msgid "Data element below array lower bound at %L" -msgstr "" +msgstr "Elemen data dibawah array batas bawah di %L" #: fortran/data.c:329 #, no-c-format msgid "Data element above array upper bound at %L" -msgstr "" +msgstr "Elemen data diatas array batas atas di %L" #: fortran/data.c:435 #, no-c-format msgid "Extension: re-initialization of '%s' at %L" -msgstr "" +msgstr "Ekstensi: reinisialisasi dari '%s' di %L" #: fortran/decl.c:253 #, no-c-format msgid "Host associated variable '%s' may not be in the DATA statement at %C" -msgstr "" +msgstr "Host berasosiasi variabel '%s' mungkin tidak berada dalam peryataan DATA di %C" #: fortran/decl.c:260 #, no-c-format msgid "Extension: initialization of common block variable '%s' in DATA statement at %C" -msgstr "" +msgstr "Ekstensi: inisialisasi dari blok umum variabel '%s' dalam pernyataan DATA di %C" #: fortran/decl.c:365 #, no-c-format msgid "Symbol '%s' must be a PARAMETER in DATA statement at %C" -msgstr "" +msgstr "Simbol '%s' harus berupa sebuah PARAMETER dalam pernyataan DATA di %C" #: fortran/decl.c:390 #, no-c-format msgid "Invalid initializer %s in Data statement at %C" -msgstr "" +msgstr "Penginisialisasi %c tidak valid dalam pernyataan DATA di %C" #: fortran/decl.c:493 #, no-c-format msgid "Initialization at %C is not allowed in a PURE procedure" -msgstr "" +msgstr "inisialisasi di %C tidak diperbolehkan dalam sebuah prosedur PURE" #: fortran/decl.c:552 #, no-c-format msgid "DATA statement at %C is not allowed in a PURE procedure" -msgstr "" +msgstr "pernyataan DATA di %C tidak diperbolehkan dalam sebuah prosedur PURE" #: fortran/decl.c:581 #, no-c-format msgid "Bad INTENT specification at %C" -msgstr "" +msgstr "Spesifikasi INTENT buruk di %C" #: fortran/decl.c:623 #, no-c-format msgid "Conflict in attributes of function argument at %C" -msgstr "" +msgstr "Konflik dalam atribut dari argumen fungsi di %C" #: fortran/decl.c:676 #, no-c-format msgid "Syntax error in character length specification at %C" -msgstr "" +msgstr "Sintaks error dalam spesifikasi panjang karakter di %C" #: fortran/decl.c:795 #, no-c-format msgid "Procedure '%s' at %C is already defined at %L" -msgstr "" +msgstr "Prosedur '%s' di %C telah terdefinisi di %L" #: fortran/decl.c:803 #, no-c-format msgid "Name '%s' at %C is already defined as a generic interface at %L" -msgstr "" +msgstr "Nama '%s' di %C telah terdefinisi sebagai sebuah antar-muka umum di %L" #: fortran/decl.c:816 #, no-c-format msgid "Procedure '%s' at %C has an explicit interface and must not have attributes declared at %L" -msgstr "" +msgstr "Prosedur '%s' di %C memiliki sebuah antar-muka eksplisit dan tidak boleh memiliki atribut terdeklarasi di %L" #: fortran/decl.c:888 #, no-c-format msgid "Procedure '%s' at %L must have the BIND(C) attribute to be C interoperable" -msgstr "" +msgstr "Prosedur '%s' di %L harus memiliki atribut BIND(C) supaya C interoperable" #: fortran/decl.c:918 #, no-c-format msgid "Type '%s' at %L is a parameter to the BIND(C) procedure '%s' but is not C interoperable because derived type '%s' is not C interoperable" -msgstr "" +msgstr "Tipe '%s' di %L adalah sebuah parameter ke BIND(C) prosedur '%s' tetapi bukan C interoperable karena tipe turunan '%s' bukan C interoperable" #: fortran/decl.c:925 #, no-c-format msgid "Variable '%s' at %L is a parameter to the BIND(C) procedure '%s' but may not be C interoperable" -msgstr "" +msgstr "Variabel '%s' di %L adalah sebuah parameter ke prosedur BIND(C) '%s' tetapi mungkintidak C interoperable" #: fortran/decl.c:940 #, no-c-format msgid "Character argument '%s' at %L must be length 1 because procedure '%s' is BIND(C)" -msgstr "" +msgstr "Argumen karakter '%s' di %L harus memiliki panjang 1 karena prosedur '%s' adalah BIND(C)" #: fortran/decl.c:954 #, no-c-format msgid "Variable '%s' at %L cannot have the ALLOCATABLE attribute because procedure '%s' is BIND(C)" -msgstr "" +msgstr "Variabel '%s' di %L tidak dapat memiliki atribut ALLOCATABLE karena prosedur '%s' adalah BIND(C)" #: fortran/decl.c:963 #, no-c-format msgid "Variable '%s' at %L cannot have the POINTER attribute because procedure '%s' is BIND(C)" -msgstr "" +msgstr "Variabel '%s' di %L tidak dapat memiliki atribut PENUNJUK karena prosedur '%s' adalah BIND(C)" #: fortran/decl.c:972 #, no-c-format msgid "Variable '%s' at %L cannot have the OPTIONAL attribute because procedure '%s' is BIND(C)" -msgstr "" +msgstr "Variabel '%s' di %L tidak dapat memiliki atribut OPSIONAL karena prosedur '%s' adalah BIND(C)" #: fortran/decl.c:985 #, no-c-format msgid "Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' at %L because the procedure is BIND(C)" -msgstr "" +msgstr "Bentuk-diasumsikan array '%s' di %L tidak dapat berupa sebuah argumen ke prosedur '%s' di %L karena prosedur adalah BIND(C)" #: fortran/decl.c:995 #, no-c-format msgid "Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' at %L because the procedure is BIND(C)" -msgstr "" +msgstr "Bentuk-deferred array '%s' di %L tidak dapat berupa sebuah argumen ke prosedur '%s' di %L karena prosedur adalah BIND(C)" #: fortran/decl.c:1071 #, no-c-format msgid "Variable '%s' in common block '%s' at %C must be declared with a C interoperable kind since common block '%s' is BIND(C)" -msgstr "" +msgstr "Variabel '%s' dalam blok umum '%s' di %C harus terdeklarasi dengan sebuah jenis C interoperable karena blok umum '%s' adalah BIND(C)" #: fortran/decl.c:1107 #, no-c-format msgid "CHARACTER expression at %L is being truncated (%d/%d)" -msgstr "" +msgstr "ekspresi KARAKTER di %L terpotong (%d/%d)" #: fortran/decl.c:1113 #, no-c-format msgid "The CHARACTER elements of the array constructor at %L must have the same length (%d/%d)" -msgstr "" +msgstr "Elemen KARAKTER dari konstruktor array di %L harus memiliki panjang yang sama (%d/%d)" #: fortran/decl.c:1203 #, no-c-format msgid "Initializer not allowed for PARAMETER '%s' at %C" -msgstr "" +msgstr "Penginisialisasi tidak diperbolehkan untuk PARAMETER '%s' di %C" #: fortran/decl.c:1213 #, no-c-format msgid "PARAMETER at %L is missing an initializer" -msgstr "" +msgstr "PARAMETER di %L hilang sebuah penginisialisasi" #: fortran/decl.c:1223 #, no-c-format msgid "Variable '%s' at %C with an initializer already appears in a DATA statement" -msgstr "" +msgstr "Variabel '%s' di %C dengan sebuah penginisialisasi telah muncul dalam sebuah pernyataan DATA" #: fortran/decl.c:1373 #, no-c-format msgid "Component at %C must have the POINTER attribute" -msgstr "" +msgstr "Komponen di %C harus memiliki sebuah atribut PENUNJUK" #: fortran/decl.c:1381 #, no-c-format msgid "Array component of structure at %C must have explicit or deferred shape" -msgstr "" +msgstr "Komponen array dari struktur di %C harus memiliki bentuk eksplisit atau deffered" #: fortran/decl.c:1425 #, no-c-format msgid "Allocatable component at %C must be an array" -msgstr "" +msgstr "Komponen dapat dialokasikan di %C harus berupa sebuah array" #: fortran/decl.c:1436 #, no-c-format msgid "Pointer array component of structure at %C must have a deferred shape" -msgstr "" +msgstr "Komponen penunjuk array dari struktur di %C harus memilki sebuah bentuk deffered" #: fortran/decl.c:1445 #, no-c-format msgid "Allocatable component of structure at %C must have a deferred shape" -msgstr "" +msgstr "Komponen dapat dialokasikan dari struktur di %C harus memiliki sebuah bentuk deffered" #: fortran/decl.c:1454 #, no-c-format msgid "Array component of structure at %C must have an explicit shape" -msgstr "" +msgstr "Struktur komponen array di %C harus memiliki sebuah bentuk eksplisit" #: fortran/decl.c:1480 #, no-c-format msgid "NULL() initialization at %C is ambiguous" -msgstr "" +msgstr "inisialisasi NULL() di %C adalah ambigu" #: fortran/decl.c:1603 fortran/decl.c:5395 #, no-c-format msgid "Duplicate array spec for Cray pointee at %C" -msgstr "" +msgstr "Duplikasi spesifikasi array untuk Cray pointee di %C" #: fortran/decl.c:1663 #, no-c-format msgid "the type of '%s' at %C has not been declared within the interface" -msgstr "" +msgstr "tipe dari '%s' di %C belum terdeklarasi didalam antar-muka" #: fortran/decl.c:1679 #, no-c-format msgid "Function name '%s' not allowed at %C" -msgstr "" +msgstr "Nama fungsi '%s' tidak diperbolehkan di %C" #: fortran/decl.c:1695 #, no-c-format msgid "Extension: Old-style initialization at %C" -msgstr "" +msgstr "Ekstensi: Gaya-lama inisialisasi di %C" #: fortran/decl.c:1710 #, no-c-format msgid "Initialization at %C isn't for a pointer variable" -msgstr "" +msgstr "Inisialisasi di %C bukan sebuah variabel penunjuk" #: fortran/decl.c:1718 #, no-c-format msgid "Pointer initialization requires a NULL() at %C" -msgstr "" +msgstr "Inisialisasi penunjuk membutuhkan sebuah NULL() di %C" #: fortran/decl.c:1724 #, no-c-format msgid "Initialization of pointer at %C is not allowed in a PURE procedure" -msgstr "" +msgstr "Inisialisasi dari pointer di %C tidak diperbolehkan dalam prosedur PURE" #: fortran/decl.c:1737 #, no-c-format msgid "Pointer initialization at %C requires '=>', not '='" -msgstr "" +msgstr "Inisialisasi dari penunjuk di %C membutuhkan '=>', bukan '='" #: fortran/decl.c:1746 fortran/decl.c:6361 #, no-c-format msgid "Expected an initialization expression at %C" -msgstr "" +msgstr "Diduga sebuah ekspresi inisialisasi di %C" #: fortran/decl.c:1752 #, no-c-format msgid "Initialization of variable at %C is not allowed in a PURE procedure" -msgstr "" +msgstr "Inisialisasi dari variabel di %C tidak diperbolehkan alam prosedur PURE" #: fortran/decl.c:1765 #, no-c-format msgid "Initialization of allocatable component at %C is not allowed" -msgstr "" +msgstr "Inisialisasi dari komponen dapat dialokasikan di %C tidak diperbolehkan" #: fortran/decl.c:1819 fortran/decl.c:1828 #, no-c-format msgid "Old-style type declaration %s*%d not supported at %C" -msgstr "" +msgstr "Tipe deklarasi gaya-lama %s*%d tidak didukung di %C" #: fortran/decl.c:1833 #, no-c-format msgid "Nonstandard type declaration %s*%d at %C" -msgstr "" +msgstr "Tipe deklarasi tidak-baku %s*%d di %C" #: fortran/decl.c:1884 fortran/decl.c:1948 #, no-c-format msgid "Missing right parenthesis at %C" -msgstr "" +msgstr "Hilang paranthesis kanan di %C" #: fortran/decl.c:1897 fortran/decl.c:1993 #, no-c-format msgid "Expected initialization expression at %C" -msgstr "" +msgstr "Diduga ekspresi inisialisasi di %C" #: fortran/decl.c:1905 fortran/decl.c:1999 #, no-c-format msgid "Expected scalar initialization expression at %C" -msgstr "" +msgstr "Didugak ekspresi inisialisasi skalar di %C" #: fortran/decl.c:1936 #, no-c-format msgid "Kind %d not supported for type %s at %C" -msgstr "" +msgstr "Jenis %d tidak didukung untuk tipe %s di %C" #: fortran/decl.c:1946 #, no-c-format msgid "Missing right parenthesis or comma at %C" -msgstr "" +msgstr "Hilang paranthesis kanan atau koma di %C" #: fortran/decl.c:2019 #, no-c-format msgid "Kind %d is not supported for CHARACTER at %C" -msgstr "" +msgstr "Jenis %d tidak didukung untuk KARAKTER di %C" #: fortran/decl.c:2148 #, no-c-format msgid "Syntax error in CHARACTER declaration at %C" -msgstr "" +msgstr "Sintaks error dalam deklarasi KARAKTER di %C" #: fortran/decl.c:2233 #, no-c-format msgid "Extension: BYTE type at %C" -msgstr "" +msgstr "Ekstensi: BYTE tipe di %C" #: fortran/decl.c:2239 #, no-c-format msgid "BYTE type used at %C is not available on the target machine" -msgstr "" +msgstr "tipe BYTE digunakan di %C tidak tersedia dalam mesin target" #: fortran/decl.c:2288 #, no-c-format msgid "DOUBLE COMPLEX at %C does not conform to the Fortran 95 standard" -msgstr "" +msgstr "DOUBLE KOMPLEKS di %C tidak konform ke standar Fortran 95" #: fortran/decl.c:2328 fortran/decl.c:2337 fortran/decl.c:2649 #: fortran/decl.c:2657 #, no-c-format msgid "Type name '%s' at %C is ambiguous" -msgstr "" +msgstr "Tipe nama '%s' di %C adalah ambigu" #: fortran/decl.c:2412 #, no-c-format msgid "Missing character range in IMPLICIT at %C" -msgstr "" +msgstr "Hilang jangkauan karakter dalam IMPLISIT di %C" #: fortran/decl.c:2458 #, no-c-format msgid "Letters must be in alphabetic order in IMPLICIT statement at %C" -msgstr "" +msgstr "Huruf harus dalam urutan alphabet dalam pernyataan IMPLISIT di %C" #: fortran/decl.c:2512 #, no-c-format msgid "Empty IMPLICIT statement at %C" -msgstr "" +msgstr "Pernyataan IMPLISIT kosong di %C" #: fortran/decl.c:2615 #, no-c-format msgid "IMPORT statement at %C only permitted in an INTERFACE body" -msgstr "" +msgstr "pernyataan IMPOR di %C hanya diijinkan di sebuah tubuh ANTAR-MUKA" #: fortran/decl.c:2620 #, no-c-format msgid "Fortran 2003: IMPORT statement at %C" -msgstr "" +msgstr "Fortran 2003: pernyataan IMPOR di %C" #: fortran/decl.c:2635 #, no-c-format msgid "Expecting list of named entities at %C" -msgstr "" +msgstr "Diduga daftar dari entiti bernama di %C" #: fortran/decl.c:2663 #, no-c-format msgid "Cannot IMPORT '%s' from host scoping unit at %C - does not exist." -msgstr "" +msgstr "Tidak dapat IMPOR '%s' dari satuan host scoping di %C - tidak ada." #: fortran/decl.c:2670 #, no-c-format msgid "'%s' is already IMPORTed from host scoping unit at %C." -msgstr "" +msgstr "'%s' telah ter-IMPOR dari satuan host scoping di %C." #: fortran/decl.c:2699 #, no-c-format msgid "Syntax error in IMPORT statement at %C" -msgstr "" +msgstr "Sintaks error dalam pernyataan IMPOR di %C" #: fortran/decl.c:2941 #, no-c-format msgid "Missing dimension specification at %C" -msgstr "" +msgstr "Hilang spesifikasi dimensi di %C" #: fortran/decl.c:3015 #, no-c-format msgid "Duplicate %s attribute at %L" -msgstr "" +msgstr "Duplikasi %s atribut di %L" #: fortran/decl.c:3034 #, no-c-format msgid "Fortran 2003: ALLOCATABLE attribute at %C in a TYPE definition" -msgstr "" +msgstr "Fortran 2003: atribut DAPAT DIALOKASIKAN di %C dalam sebuah definisi TIPE" #: fortran/decl.c:3044 #, no-c-format msgid "Attribute at %L is not allowed in a TYPE definition" -msgstr "" +msgstr "Atribut di %L tidak diijinkan dalam sebuah definisi TIPE" #: fortran/decl.c:3062 #, no-c-format msgid "Fortran 2003: Attribute %s at %L in a TYPE definition" -msgstr "" +msgstr "Fortran 2003: Atribut %s di %L dalam sebuah definisi TIPE" #: fortran/decl.c:3073 #, no-c-format msgid "%s attribute at %L is not allowed outside of the specification part of a module" -msgstr "" +msgstr "%s atribut di %L tidak diperbolehka diluar dari bagian spesifikasi dari sebuah modul" #: fortran/decl.c:3125 fortran/decl.c:5635 #, no-c-format msgid "PROTECTED at %C only allowed in specification part of a module" -msgstr "" +msgstr "TERPROTEKSI di %C hanya diperbolehkan dalam bagian spesifikasi dari modul" #: fortran/decl.c:3131 #, no-c-format msgid "Fortran 2003: PROTECTED attribute at %C" -msgstr "" +msgstr "Fortran 2003: atribut TERPROTEKSI di %C" #: fortran/decl.c:3162 #, no-c-format msgid "Fortran 2003: VALUE attribute at %C" -msgstr "" +msgstr "Fortran 2003: atribut NILAI di %C" #: fortran/decl.c:3172 #, no-c-format msgid "Fortran 2003: VOLATILE attribute at %C" -msgstr "" +msgstr "Fortran 2003: atribut VOLATILE di %C" #: fortran/decl.c:3212 #, no-c-format msgid "Multiple identifiers provided with single NAME= specifier at %C" -msgstr "" +msgstr "Multiple pengidentifikasi disediakan dengan penspesifikasi NAMA= tunggal di %C" #. Print an error, but continue parsing line. #: fortran/decl.c:3261 #, no-c-format msgid "C kind parameter is for type %s but symbol '%s' at %L is of type %s" -msgstr "" +msgstr "parameter jenis C adalah untuk tipe %s tetapi simbol '%s' di %L adalah tipe %s" #: fortran/decl.c:3325 #, no-c-format msgid "Implicitly declared BIND(C) function '%s' at %L may not be C interoperable" -msgstr "" +msgstr "secara implisit terdeklarasi fungsi BIND(C) '%s' di %L mungkin tidak C interoperable" #: fortran/decl.c:3347 #, no-c-format msgid "Variable '%s' in common block '%s' at %L may not be a C interoperable kind though common block '%s' is BIND(C)" -msgstr "" +msgstr "Variabel '%s' dalam blok umum '%s' di %L mungkin tidak berupa jenis C dapat berinteroperasi melalui blok umum '%s' adalah BIND(C)" #: fortran/decl.c:3356 #, no-c-format msgid "Type declaration '%s' at %L is not C interoperable but it is BIND(C)" -msgstr "" +msgstr "Tipe deklarasi '%s' di %L bukan C interoperable tetapi ini adalah BIND(C)" #: fortran/decl.c:3360 #, no-c-format msgid "Variable '%s' at %L may not be a C interoperable kind but it is bind(c)" -msgstr "" +msgstr "Variabel '%s' di %L mungkin bukan sebuah jenis C interoperable tetapi ini adalah bind(c)" #: fortran/decl.c:3372 #, no-c-format msgid "Variable '%s' in common block '%s' at %L cannot be declared with BIND(C) since it is not a global" -msgstr "" +msgstr "Variabel '%s' dalam blok umum '%s' di %L tidak dapat dideklarasikan dengan BIND(C)karena ini bukan sebuah global" #: fortran/decl.c:3386 #, no-c-format msgid "Variable '%s' at %L cannot have both the POINTER and BIND(C) attributes" -msgstr "" +msgstr "Variabel '%s' di %L tidak dapat memiliki dua atribut PENUNJUK dan BIND(C)" #: fortran/decl.c:3394 #, no-c-format msgid "Variable '%s' at %L cannot have both the ALLOCATABLE and BIND(C) attributes" -msgstr "" +msgstr "Variabel '%s' di %L tidak dapat memiliki dua atribut DAPAT DIALOKASIKAN dan BIND(C)" #: fortran/decl.c:3404 #, no-c-format msgid "Return type of BIND(C) function '%s' at %L cannot be an array" -msgstr "" +msgstr "Tipe kembali dari fungsi BIND(C) '%s' di %L tidak dapat berupa sebuah array" #: fortran/decl.c:3412 #, no-c-format msgid "Return type of BIND(C) function '%s' at %L cannot be a character string" -msgstr "" +msgstr "Tipe kembali dari fungsi BIND(C) '%s' di %L tidak dapat berupa string karakter" #. Use gfc_warning_now because we won't say that the symbol fails #. just because of this. #: fortran/decl.c:3424 #, no-c-format msgid "Symbol '%s' at %L is marked PRIVATE but has been given the binding label '%s'" -msgstr "" +msgstr "Simbol '%s' di %L ditandai PRIVATE tetapi telah diberikan level binding '%s'" #: fortran/decl.c:3499 #, no-c-format msgid "Need either entity or common block name for attribute specification statement at %C" -msgstr "" +msgstr "Dibutuhkan baik entiti atau nama blok umum untuk pernyataan spesifikasi atribut di %C" #: fortran/decl.c:3546 #, no-c-format msgid "Missing entity or common block name for attribute specification statement at %C" -msgstr "" +msgstr "Hilang entiti atau nama blok umum untuk pernyataan spesifikasi atribut di %C" #. Now we have an error, which we signal, and then fix up #. because the knock-on is plain and simple confusing. #: fortran/decl.c:3653 #, no-c-format msgid "Derived type at %C has not been previously defined and so cannot appear in a derived type definition" -msgstr "" +msgstr "Tipe turunan di %C belum pernah didefinisikan sebelumnya jadi tidak dapat muncul dalam sebuah tipe definisi turunan" #: fortran/decl.c:3685 #, no-c-format msgid "Syntax error in data declaration at %C" -msgstr "" +msgstr "Sintaks error dalam deklarasi data di %C" #: fortran/decl.c:3832 #, no-c-format msgid "Name '%s' at %C is the name of the procedure" -msgstr "" +msgstr "Nama '%s' di %C adalah nama dari prosedur" #: fortran/decl.c:3844 #, no-c-format msgid "Unexpected junk in formal argument list at %C" -msgstr "" +msgstr "Tidak teduga sampah dalam daftar argumen formal di %C" #: fortran/decl.c:3861 #, no-c-format msgid "Duplicate symbol '%s' in formal argument list at %C" -msgstr "" +msgstr "Duplikasi simbol '%s dalam daftar argumen formal di %C" #: fortran/decl.c:3912 #, no-c-format msgid "RESULT variable at %C must be different than function name" -msgstr "" +msgstr "variabel RESULT di %C harus berbeda dari nama fungsi" #: fortran/decl.c:3990 #, no-c-format msgid "Unexpected junk after function declaration at %C" -msgstr "" +msgstr "Tidak terduga sampah setelah deklarasi fungsi di %C" #: fortran/decl.c:4000 fortran/decl.c:4734 #, no-c-format msgid "Extension: BIND(C) attribute at %L may not be specified for an internal procedure" -msgstr "" +msgstr "Ekstensi: BIND(C) atribut di %L mungkin tidak dispesifikasikan untuk sebuah prosedur internal" #: fortran/decl.c:4066 #, no-c-format msgid "Interface '%s' at %C may not be generic" -msgstr "" +msgstr "Antar-muka '%s' di %C mungkin bukan umum" #: fortran/decl.c:4071 #, no-c-format msgid "Interface '%s' at %C may not be a statement function" -msgstr "" +msgstr "Antar-muka '%s' di %C mungkin bukan sebuah pernyataan fungsi" #: fortran/decl.c:4082 #, no-c-format msgid "Intrinsic procedure '%s' not allowed in PROCEDURE statement at %C" -msgstr "" +msgstr "Prosedur intrinsik '%s' tidak diperbolehkan dalam pernyataan PROSEDUR di %C" #: fortran/decl.c:4118 #, no-c-format msgid "BIND(C) attribute at %C requires an interface with BIND(C)" -msgstr "" +msgstr "atribut BIND(C) di %C membutuhkan sebuah antar-muka dengan BIND(C)" #: fortran/decl.c:4125 #, no-c-format msgid "BIND(C) procedure with NAME may not have POINTER attribute at %C" -msgstr "" +msgstr "prosedur BIND(C) dengan NAMA mungkin tidak memiliki atribut PENUNJUK di %C" #: fortran/decl.c:4131 #, no-c-format msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME" -msgstr "" +msgstr "Prosedur dummy di %C mungkin tidak memiliki atribut BIND(C) dengan NAMA" #: fortran/decl.c:4167 fortran/decl.c:4210 #, no-c-format msgid "Syntax error in PROCEDURE statement at %C" -msgstr "" +msgstr "Sintaks error dalam pernyataan PROSEDUR di %C" #: fortran/decl.c:4184 #, no-c-format msgid "PROCEDURE at %C must be in a generic interface" -msgstr "" +msgstr "PROSEDUR di %C harus berupa sebuah antar-muka umum" #: fortran/decl.c:4235 #, no-c-format msgid "Fortran 2003: Procedure components at %C are not yet implemented in gfortran" -msgstr "" +msgstr "Fortran 2003: Komponen prosedur di %C belum terimplementasi dalam gfortran" #: fortran/decl.c:4245 #, no-c-format msgid "Fortran 2003: PROCEDURE statement at %C" -msgstr "" +msgstr "Fortran 2003: pernyataan PROSEDUR di %C" #: fortran/decl.c:4293 #, no-c-format msgid "Expected formal argument list in function definition at %C" -msgstr "" +msgstr "Diduga daftar argumen formal dalam definisi fungsi di %C" #: fortran/decl.c:4317 fortran/decl.c:4321 fortran/decl.c:4520 #: fortran/decl.c:4524 fortran/decl.c:4702 fortran/decl.c:4706 #: fortran/symbol.c:1402 #, no-c-format msgid "BIND(C) attribute at %L can only be used for variables or common blocks" -msgstr "" +msgstr "atribut BIND(C) di %L hanya dapat digunakan untuk variabel atau blok umum" #: fortran/decl.c:4353 #, no-c-format msgid "Function '%s' at %C already has a type of %s" -msgstr "" +msgstr "Fungsi '%s' di %C telah memiliki sebuah tipe dari %s" #: fortran/decl.c:4441 #, no-c-format msgid "ENTRY statement at %C cannot appear within a PROGRAM" -msgstr "" +msgstr "pernyataan MASUKAN di %C tidak dapat muncul dalam sebuah APLIKASI" #: fortran/decl.c:4444 #, no-c-format msgid "ENTRY statement at %C cannot appear within a MODULE" -msgstr "" +msgstr "pernyataan MASUKAN di %C tidak dapat muncul dalam sebuah MODUL" #: fortran/decl.c:4447 #, no-c-format msgid "ENTRY statement at %C cannot appear within a BLOCK DATA" -msgstr "" +msgstr "pernyataan MASUKAN di %C tidak dapat muncul didalam sebuah DATA BLOK" #: fortran/decl.c:4451 #, no-c-format msgid "ENTRY statement at %C cannot appear within an INTERFACE" -msgstr "" +msgstr "pernyataan MASUKAN di %C tidak dapat muncul dalam sebuah ANTAR-MUKA" #: fortran/decl.c:4455 #, no-c-format msgid "ENTRY statement at %C cannot appear within a DERIVED TYPE block" -msgstr "" +msgstr "pernyataan MASUKAN di %C tidak dapat muncul didalam sebuah blok TIPE TURUNAN" #: fortran/decl.c:4459 #, no-c-format msgid "ENTRY statement at %C cannot appear within an IF-THEN block" -msgstr "" +msgstr "pernyataan MASUKAN di %C tidak dapat muncul didalam sebuah blok IF-THEN" #: fortran/decl.c:4463 #, no-c-format msgid "ENTRY statement at %C cannot appear within a DO block" -msgstr "" +msgstr "pernnyataan MASUKAN di %C tidak dapat muncul didalam sebuah blok DO" #: fortran/decl.c:4467 #, no-c-format msgid "ENTRY statement at %C cannot appear within a SELECT block" -msgstr "" +msgstr "pernyataan MASUKAN di %C tidak dapat muncul didalam sebuah blok SELECT" #: fortran/decl.c:4471 #, no-c-format msgid "ENTRY statement at %C cannot appear within a FORALL block" -msgstr "" +msgstr "pernyataan MASUKAN di %C tidak dapat muncul didalam sebuah blok FORALL" #: fortran/decl.c:4475 #, no-c-format msgid "ENTRY statement at %C cannot appear within a WHERE block" -msgstr "" +msgstr "pernyataan MASUKAN di %C tidak dapat muncul didalam sebuah blok WHERE" #: fortran/decl.c:4479 #, no-c-format msgid "ENTRY statement at %C cannot appear within a contained subprogram" -msgstr "" +msgstr "pernyataan MASUKAN di %C tidak dapat muncul didalam sebuah subprogram terkontain" #: fortran/decl.c:4497 #, no-c-format msgid "ENTRY statement at %C cannot appear in a contained procedure" -msgstr "" +msgstr "pernyataan MASUKAN di %C tidak dapat muncul dalam sebuah prosedur terkontain" #: fortran/decl.c:4552 fortran/decl.c:4742 #, no-c-format msgid "Missing required parentheses before BIND(C) at %C" -msgstr "" +msgstr "Hilang parantheses yang dibutuhkan sebelum BIND(C) di %C" #: fortran/decl.c:4801 fortran/decl.c:4817 #, no-c-format msgid "Syntax error in NAME= specifier for binding label at %C" -msgstr "" +msgstr "Sintaks error dalam penspesifikasi NAMA= untuk binding label di %C" #: fortran/decl.c:4832 #, no-c-format msgid "Missing closing quote '\"' for binding label at %C" -msgstr "" +msgstr "Hilang quote penutup '\"' untuk binding label di %C" #: fortran/decl.c:4841 #, no-c-format msgid "Missing closing quote ''' for binding label at %C" -msgstr "" +msgstr "Hilang quote penutup ''' untuk binding label di %C" #: fortran/decl.c:4851 #, no-c-format msgid "Missing closing paren for binding label at %C" -msgstr "" +msgstr "Hilang penutup paren untuk binding label di %C" #: fortran/decl.c:4857 #, no-c-format msgid "No binding name is allowed in BIND(C) at %C" -msgstr "" +msgstr "Tidak ada nama binding diijinkan dalam BIND(C) di %C" #: fortran/decl.c:4863 #, no-c-format msgid "For dummy procedure %s, no binding name is allowed in BIND(C) at %C" -msgstr "" +msgstr "Untuk prosedur dummy %s, tidak ada nama binding diijinkan dalam BIND(C) di %C" #: fortran/decl.c:4894 #, no-c-format msgid "NAME not allowed on BIND(C) for ABSTRACT INTERFACE at %C" -msgstr "" +msgstr "NAMA tidak diijinkan dalam BIND(C) untuk ANTAR-MUKA ABSTRAK di %C" #: fortran/decl.c:5066 #, no-c-format msgid "Unexpected END statement at %C" -msgstr "" +msgstr "Tidak terduga pernyataan END di %C" #. We would have required END [something]. #: fortran/decl.c:5075 #, no-c-format msgid "%s statement expected at %L" -msgstr "" +msgstr "pernyataan %s tidak terduga di %L" #: fortran/decl.c:5086 #, no-c-format msgid "Expecting %s statement at %C" -msgstr "" +msgstr "Diduga pernyataan %s di %C" #: fortran/decl.c:5101 #, no-c-format msgid "Expected block name of '%s' in %s statement at %C" -msgstr "" +msgstr "Diduga nama blok dari '%s' dalam pernyataan %s di %C" #: fortran/decl.c:5118 #, no-c-format msgid "Expected terminating name at %C" -msgstr "" +msgstr "Diduga nama berakhir di %C" #: fortran/decl.c:5127 #, no-c-format msgid "Expected label '%s' for %s statement at %C" -msgstr "" +msgstr "Diduga label '%s' untuk pernyataan %s di %C" #: fortran/decl.c:5181 #, no-c-format msgid "Missing array specification at %L in DIMENSION statement" -msgstr "" +msgstr "Hilang spesifikasi array di %L dalam pernyataan DIMENSI" #: fortran/decl.c:5189 #, no-c-format msgid "Dimensions specified for %s at %L after its initialisation" -msgstr "" +msgstr "Dimensi dipesifikasikan untuk %s di %L setelah inisialisasinya" #: fortran/decl.c:5198 #, no-c-format msgid "Array specification must be deferred at %L" -msgstr "" +msgstr "Spesifikasi array harus deferred di %L" #: fortran/decl.c:5275 #, no-c-format msgid "Unexpected character in variable list at %C" -msgstr "" +msgstr "Karakter tidak terduda dalam daftar variabel di %C" #: fortran/decl.c:5312 #, no-c-format msgid "Expected '(' at %C" -msgstr "" +msgstr "Diduga '(' di %C" #: fortran/decl.c:5326 fortran/decl.c:5366 #, no-c-format msgid "Expected variable name at %C" -msgstr "" +msgstr "Diduga nama variabel di %C" #: fortran/decl.c:5342 #, no-c-format msgid "Cray pointer at %C must be an integer" -msgstr "" +msgstr "Penunjuk Cray di %C harus berupa sebuah integer" #: fortran/decl.c:5346 #, no-c-format msgid "Cray pointer at %C has %d bytes of precision; memory addresses require %d bytes" -msgstr "" +msgstr "Penunjuk Cray di %C memiliki %d bytes ketelitian; alamat memori membutuhkan %d bytes" #: fortran/decl.c:5352 #, no-c-format msgid "Expected \",\" at %C" -msgstr "" +msgstr "Diduga \",\" di %C" #: fortran/decl.c:5415 #, no-c-format msgid "Expected \")\" at %C" -msgstr "" +msgstr "Diduga \")\" di %C" #: fortran/decl.c:5427 #, no-c-format msgid "Expected \",\" or end of statement at %C" -msgstr "" +msgstr "Diduga \",\" atau akhir dari pernyataan di %C" #: fortran/decl.c:5491 #, no-c-format msgid "Cray pointer declaration at %C requires -fcray-pointer flag" -msgstr "" +msgstr "Deklarasi penunjuk cray di %C membutuhkan opsi -fcray-pointer" #: fortran/decl.c:5586 #, no-c-format msgid "Access specification of the %s operator at %C has already been specified" -msgstr "" +msgstr "Spesifikasi akses dari operator %s di %C telah dispesifikasikan" #: fortran/decl.c:5603 #, no-c-format msgid "Access specification of the .%s. operator at %C has already been specified" -msgstr "" +msgstr "Spesifikasi akses dari operator .%s. di %C telah dispesifikasikan" #: fortran/decl.c:5641 #, no-c-format msgid "Fortran 2003: PROTECTED statement at %C" -msgstr "" +msgstr "Fortran 2003: pernyataan TERPROTEKSI di %C" #: fortran/decl.c:5681 #, no-c-format msgid "Syntax error in PROTECTED statement at %C" -msgstr "" +msgstr "Sintaks error dalam pernyataan TERPROTEKSI di %C" #: fortran/decl.c:5702 #, no-c-format msgid "PRIVATE statement at %C is only allowed in the specification part of a module" -msgstr "" +msgstr "pernyataan PRIVATE di %C hanya diperbolehkan dalam bagian spesifikasi dari sebuah modul" #: fortran/decl.c:5739 #, no-c-format msgid "PUBLIC statement at %C is only allowed in the specification part of a module" -msgstr "" +msgstr "pernyataan PUBLIK di %C hanya diperbolehkan dalam bagian spesifikasi dari sebuah modul" #: fortran/decl.c:5766 #, no-c-format msgid "Expected variable name at %C in PARAMETER statement" -msgstr "" +msgstr "Nama variabel diduga di %C dalam pernyataan PARAMETER" #: fortran/decl.c:5773 #, no-c-format msgid "Expected = sign in PARAMETER statement at %C" -msgstr "" +msgstr "Diduga tanda = dalam pernyataan PARAMETER di %C" #: fortran/decl.c:5779 #, no-c-format msgid "Expected expression at %C in PARAMETER statement" -msgstr "" +msgstr "Diduga ekspresi di %C dalam pernyataan PARAMETER" #: fortran/decl.c:5799 #, no-c-format msgid "Initializing already initialized variable at %C" -msgstr "" +msgstr "Inisialisasi variabel yang telah diinisialisasi di %C" #: fortran/decl.c:5844 #, no-c-format msgid "Unexpected characters in PARAMETER statement at %C" -msgstr "" +msgstr "Karakter tidak terduga dalam pernyataan PARAMETER di %C" #: fortran/decl.c:5868 #, no-c-format msgid "Blanket SAVE statement at %C follows previous SAVE statement" -msgstr "" +msgstr "Blanket pernyataan SAVE di %C mengikuti pernyataan SAVE sebelumnya" #: fortran/decl.c:5880 #, no-c-format msgid "SAVE statement at %C follows blanket SAVE statement" -msgstr "" +msgstr "pernyataan SAVE di %C mengikuti blanket pernyataan SAVE" #: fortran/decl.c:5927 #, no-c-format msgid "Syntax error in SAVE statement at %C" -msgstr "" +msgstr "Sintaks error dalam pernyataan SAVE di %C" #: fortran/decl.c:5938 #, no-c-format msgid "Fortran 2003: VALUE statement at %C" -msgstr "" +msgstr "Fortran 2003: pernyataan NILAI di %C" #: fortran/decl.c:5978 #, no-c-format msgid "Syntax error in VALUE statement at %C" -msgstr "" +msgstr "Sintaks error dalam pernyataan NILAI di %C" #: fortran/decl.c:5989 #, no-c-format msgid "Fortran 2003: VOLATILE statement at %C" -msgstr "" +msgstr "Fortran 2003: pernyataan VOLATILE di %C" #: fortran/decl.c:6031 #, no-c-format msgid "Syntax error in VOLATILE statement at %C" -msgstr "" +msgstr "Sintaks error dalam pernyataan VOLATILE di %C" #: fortran/decl.c:6054 #, no-c-format msgid "MODULE PROCEDURE at %C must be in a generic module interface" -msgstr "" +msgstr "PROSEDUR MODUL di %C harus dalam sebuah antar-muka modul umum" #: fortran/decl.c:6142 #, no-c-format msgid "Derived type at %C can only be PRIVATE in the specification part of a module" -msgstr "" +msgstr "Tipe turunan di %C hanya dapat berupa PRIVATE dalam bagian spesifikasi dari sebuah modul" #: fortran/decl.c:6154 #, no-c-format msgid "Derived type at %C can only be PUBLIC in the specification part of a module" -msgstr "" +msgstr "Tipe turunan di %C hanya dapat berupa PUBLIK dalam bagian spesifikasi dari sebuah modul" #: fortran/decl.c:6211 #, no-c-format msgid "Expected :: in TYPE definition at %C" -msgstr "" +msgstr "Diduga :: dalam definisi TIPE di %C" #: fortran/decl.c:6222 #, no-c-format msgid "Type name '%s' at %C cannot be the same as an intrinsic type" -msgstr "" +msgstr "Nama tipe '%s' di %C tidak dapat sama seperti sebuah tipe intrinsic" #: fortran/decl.c:6232 #, no-c-format msgid "Derived type name '%s' at %C already has a basic type of %s" -msgstr "" +msgstr "Nama tipe turunan '%s' di %C telah memiliki sebuah tipe dasar dari %s" #: fortran/decl.c:6248 #, no-c-format msgid "Derived type definition of '%s' at %C has already been defined" -msgstr "" +msgstr "Definisi tipe turunan dari '%s' di %C telah terdefinisi" #: fortran/decl.c:6286 #, no-c-format msgid "Cray Pointee at %C cannot be assumed shape array" -msgstr "" +msgstr "Cray Pointee di %C tidak dapat diasumsikan bentuk array" #: fortran/decl.c:6306 #, no-c-format msgid "Fortran 2003: ENUM and ENUMERATOR at %C" -msgstr "" +msgstr "Fortran 2003: ENUM dan ENUMERATOR di %C" #: fortran/decl.c:6378 #, no-c-format msgid "ENUMERATOR %L not initialized with integer expression" -msgstr "" +msgstr "ENUMERATOR %L tidak diinisialisasi dengan ekspresi integer" #: fortran/decl.c:6427 #, no-c-format msgid "ENUM definition statement expected before %C" -msgstr "" +msgstr "pernyataan definisi ENUM diduga sebelum %C" #: fortran/decl.c:6460 #, no-c-format msgid "Syntax error in ENUMERATOR definition at %C" -msgstr "" +msgstr "Sintaks error dalam definisi ENUMERATOR di %C" #: fortran/dump-parse-tree.c:48 #, c-format msgid "%-5d " -msgstr "" +msgstr "%-5d" #: fortran/dump-parse-tree.c:50 #, c-format msgid " " -msgstr "" +msgstr " " #: fortran/dump-parse-tree.c:73 fortran/dump-parse-tree.c:637 #, c-format msgid "(%s " -msgstr "" +msgstr "(%s " #: fortran/dump-parse-tree.c:86 fortran/dump-parse-tree.c:1091 #: fortran/dump-parse-tree.c:1135 fortran/dump-parse-tree.c:1145 #, c-format msgid "%d" -msgstr "" +msgstr "%d" #: fortran/dump-parse-tree.c:90 fortran/dump-parse-tree.c:116 #: fortran/dump-parse-tree.c:159 fortran/dump-parse-tree.c:395 @@ -5116,395 +5116,395 @@ msgstr "" #: fortran/dump-parse-tree.c:647 #, c-format msgid ")" -msgstr "" +msgstr ")" #: fortran/dump-parse-tree.c:99 fortran/dump-parse-tree.c:435 #, c-format msgid "(" -msgstr "" +msgstr "(" #: fortran/dump-parse-tree.c:105 #, c-format msgid "%s = " -msgstr "" +msgstr "%s = " #: fortran/dump-parse-tree.c:109 #, c-format msgid "(arg not-present)" -msgstr "" +msgstr "(arg tidak-ada)" #: fortran/dump-parse-tree.c:113 fortran/dump-parse-tree.c:389 #: fortran/dump-parse-tree.c:514 #, c-format msgid " " -msgstr "" +msgstr " " #: fortran/dump-parse-tree.c:130 fortran/dump-parse-tree.c:325 #, c-format msgid "()" -msgstr "" +msgstr "()" #: fortran/dump-parse-tree.c:134 #, c-format msgid "(%d" -msgstr "" +msgstr "(%d" #: fortran/dump-parse-tree.c:148 #, c-format msgid " %s " -msgstr "" +msgstr " %s " #: fortran/dump-parse-tree.c:175 #, c-format msgid "FULL" -msgstr "" +msgstr "PENUH" #: fortran/dump-parse-tree.c:206 fortran/dump-parse-tree.c:215 #: fortran/dump-parse-tree.c:288 #, c-format msgid " , " -msgstr "" +msgstr " , " #: fortran/dump-parse-tree.c:220 #, c-format msgid "UNKNOWN" -msgstr "" +msgstr "TIDAK DIKETAHUI" #: fortran/dump-parse-tree.c:244 #, c-format msgid " %% %s" -msgstr "" +msgstr " %% %s" #: fortran/dump-parse-tree.c:302 #, c-format msgid "''" -msgstr "" +msgstr "''" #: fortran/dump-parse-tree.c:307 #, c-format msgid "' // ACHAR(" -msgstr "" +msgstr " // ACHAR(" #: fortran/dump-parse-tree.c:309 #, c-format msgid ") // '" -msgstr "" +msgstr ") // '" #: fortran/dump-parse-tree.c:337 #, c-format msgid "%s(" -msgstr "" +msgstr "%s(" #: fortran/dump-parse-tree.c:343 #, c-format msgid "(/ " -msgstr "" +msgstr "(/ " #: fortran/dump-parse-tree.c:345 #, c-format msgid " /)" -msgstr "" +msgstr " /)" #: fortran/dump-parse-tree.c:351 #, c-format msgid "NULL()" -msgstr "" +msgstr "NULL()" #: fortran/dump-parse-tree.c:361 fortran/dump-parse-tree.c:374 #: fortran/dump-parse-tree.c:387 fortran/dump-parse-tree.c:393 #, c-format msgid "_%d" -msgstr "" +msgstr "_%d" #: fortran/dump-parse-tree.c:366 #, c-format msgid ".true." -msgstr "" +msgstr ".benar." #: fortran/dump-parse-tree.c:368 #, c-format msgid ".false." -msgstr "" +msgstr ".salah." #: fortran/dump-parse-tree.c:383 #, c-format msgid "(complex " -msgstr "" +msgstr "(kompleks " #: fortran/dump-parse-tree.c:399 #, c-format msgid "%dH" -msgstr "" +msgstr "%dH" #: fortran/dump-parse-tree.c:408 #, c-format msgid "???" -msgstr "" +msgstr "???" #: fortran/dump-parse-tree.c:414 #, c-format msgid " {" -msgstr "" +msgstr " {" #: fortran/dump-parse-tree.c:418 #, c-format msgid "%.2x" -msgstr "" +msgstr "%.2x" #: fortran/dump-parse-tree.c:429 fortran/dump-parse-tree.c:754 #, c-format msgid "%s:" -msgstr "" +msgstr "%s:" #: fortran/dump-parse-tree.c:439 #, c-format msgid "U+ " -msgstr "" +msgstr "U+ " #: fortran/dump-parse-tree.c:442 #, c-format msgid "U- " -msgstr "" +msgstr "U- " #: fortran/dump-parse-tree.c:445 #, c-format msgid "+ " -msgstr "" +msgstr "+ " #: fortran/dump-parse-tree.c:448 #, c-format msgid "- " -msgstr "" +msgstr "- " #: fortran/dump-parse-tree.c:451 #, c-format msgid "* " -msgstr "" +msgstr "* " #: fortran/dump-parse-tree.c:454 #, c-format msgid "/ " -msgstr "" +msgstr "/ " #: fortran/dump-parse-tree.c:457 #, c-format msgid "** " -msgstr "" +msgstr "** " #: fortran/dump-parse-tree.c:460 #, c-format msgid "// " -msgstr "" +msgstr "// " #: fortran/dump-parse-tree.c:463 #, c-format msgid "AND " -msgstr "" +msgstr "AND " #: fortran/dump-parse-tree.c:466 #, c-format msgid "OR " -msgstr "" +msgstr "OR " #: fortran/dump-parse-tree.c:469 #, c-format msgid "EQV " -msgstr "" +msgstr "EQV " #: fortran/dump-parse-tree.c:472 #, c-format msgid "NEQV " -msgstr "" +msgstr "NEQV " #: fortran/dump-parse-tree.c:476 #, c-format msgid "= " -msgstr "" +msgstr "= " #: fortran/dump-parse-tree.c:480 #, c-format msgid "/= " -msgstr "" +msgstr "/= " #: fortran/dump-parse-tree.c:484 #, c-format msgid "> " -msgstr "" +msgstr "> " #: fortran/dump-parse-tree.c:488 #, c-format msgid ">= " -msgstr "" +msgstr ">= " #: fortran/dump-parse-tree.c:492 #, c-format msgid "< " -msgstr "" +msgstr "< " #: fortran/dump-parse-tree.c:496 #, c-format msgid "<= " -msgstr "" +msgstr "<= " #: fortran/dump-parse-tree.c:499 #, c-format msgid "NOT " -msgstr "" +msgstr "NOT " #: fortran/dump-parse-tree.c:502 #, c-format msgid "parens" -msgstr "" +msgstr "parens" #: fortran/dump-parse-tree.c:524 #, c-format msgid "%s[" -msgstr "" +msgstr "%s[" #: fortran/dump-parse-tree.c:530 #, c-format msgid "%s[[" -msgstr "" +msgstr "%s[[" #: fortran/dump-parse-tree.c:560 #, c-format msgid "(%s %s %s %s %s" -msgstr "" +msgstr "(%s %s %s %s %s" #: fortran/dump-parse-tree.c:567 #, c-format msgid " ALLOCATABLE" -msgstr "" +msgstr " DAPAT DIALOKASIKAN" #: fortran/dump-parse-tree.c:569 fortran/dump-parse-tree.c:642 #, c-format msgid " DIMENSION" -msgstr "" +msgstr " DIMENSI" #: fortran/dump-parse-tree.c:571 #, c-format msgid " EXTERNAL" -msgstr "" +msgstr " EKSTERNAL" #: fortran/dump-parse-tree.c:573 #, c-format msgid " INTRINSIC" -msgstr "" +msgstr " INTRINSIK" #: fortran/dump-parse-tree.c:575 #, c-format msgid " OPTIONAL" -msgstr "" +msgstr " OPSIONAL" #: fortran/dump-parse-tree.c:577 fortran/dump-parse-tree.c:640 #, c-format msgid " POINTER" -msgstr "" +msgstr " PENUNJUK" #: fortran/dump-parse-tree.c:579 #, c-format msgid " PROTECTED" -msgstr "" +msgstr " TERPROTEKSI" #: fortran/dump-parse-tree.c:581 #, c-format msgid " VALUE" -msgstr "" +msgstr " NILAI" #: fortran/dump-parse-tree.c:583 #, c-format msgid " VOLATILE" -msgstr "" +msgstr " VOLATILE" #: fortran/dump-parse-tree.c:585 #, c-format msgid " THREADPRIVATE" -msgstr "" +msgstr " THREADPRIVATE" #: fortran/dump-parse-tree.c:587 #, c-format msgid " TARGET" -msgstr "" +msgstr " TARGET" #: fortran/dump-parse-tree.c:589 #, c-format msgid " DUMMY" -msgstr "" +msgstr " DUMMY" #: fortran/dump-parse-tree.c:591 #, c-format msgid " RESULT" -msgstr "" +msgstr " HASIL" #: fortran/dump-parse-tree.c:593 #, c-format msgid " ENTRY" -msgstr "" +msgstr " MASUKAN" #: fortran/dump-parse-tree.c:595 #, c-format msgid " BIND(C)" -msgstr "" +msgstr " BIND(C)" #: fortran/dump-parse-tree.c:598 #, c-format msgid " DATA" -msgstr "" +msgstr " DATA" #: fortran/dump-parse-tree.c:600 #, c-format msgid " USE-ASSOC" -msgstr "" +msgstr " GUNAKAN-ASSOC" #: fortran/dump-parse-tree.c:602 #, c-format msgid " IN-NAMELIST" -msgstr "" +msgstr " DALAM-DAFTARNAMA" #: fortran/dump-parse-tree.c:604 #, c-format msgid " IN-COMMON" -msgstr "" +msgstr " DALAM-UMUM" #: fortran/dump-parse-tree.c:607 #, c-format msgid " ABSTRACT INTERFACE" -msgstr "" +msgstr " ABSTRAK ANTAR-MUKA" #: fortran/dump-parse-tree.c:609 #, c-format msgid " FUNCTION" -msgstr "" +msgstr " FUNGSI" #: fortran/dump-parse-tree.c:611 #, c-format msgid " SUBROUTINE" -msgstr "" +msgstr " SUBRUTIN" #: fortran/dump-parse-tree.c:613 #, c-format msgid " IMPLICIT-TYPE" -msgstr "" +msgstr " TIPE-IMPLISIT" #: fortran/dump-parse-tree.c:616 #, c-format msgid " SEQUENCE" -msgstr "" +msgstr " URUTAN" #: fortran/dump-parse-tree.c:618 #, c-format msgid " ELEMENTAL" -msgstr "" +msgstr " ELEMENTAL" #: fortran/dump-parse-tree.c:620 #, c-format msgid " PURE" -msgstr "" +msgstr " PURE" #: fortran/dump-parse-tree.c:622 #, c-format msgid " RECURSIVE" -msgstr "" +msgstr " REKURSIF" #: fortran/dump-parse-tree.c:646 fortran/dump-parse-tree.c:693 #: fortran/dump-parse-tree.c:717 fortran/dump-parse-tree.c:757 @@ -5512,976 +5512,976 @@ msgstr "" #: fortran/dump-parse-tree.c:1806 #, c-format msgid " %s" -msgstr "" +msgstr " %s" #: fortran/dump-parse-tree.c:670 #, c-format msgid "symbol %s " -msgstr "" +msgstr "simbol %s " #: fortran/dump-parse-tree.c:677 #, c-format msgid "value: " -msgstr "" +msgstr "nilai: " #: fortran/dump-parse-tree.c:684 #, c-format msgid "Array spec:" -msgstr "" +msgstr "Spesifikasi array:" #: fortran/dump-parse-tree.c:691 #, c-format msgid "Generic interfaces:" -msgstr "" +msgstr "Antar-muka umum:" #: fortran/dump-parse-tree.c:699 #, c-format msgid "result: %s" -msgstr "" +msgstr "hasil: %s" #: fortran/dump-parse-tree.c:705 #, c-format msgid "components: " -msgstr "" +msgstr "komponen: " #: fortran/dump-parse-tree.c:712 #, c-format msgid "Formal arglist:" -msgstr "" +msgstr "Daftar argumen formal:" #: fortran/dump-parse-tree.c:719 #, c-format msgid " [Alt Return]" -msgstr "" +msgstr " [Alt Return]" #: fortran/dump-parse-tree.c:726 #, c-format msgid "Formal namespace" -msgstr "" +msgstr "Ruang nama formal" #: fortran/dump-parse-tree.c:793 #, c-format msgid "common: /%s/ " -msgstr "" +msgstr "umum: /%s/ " #: fortran/dump-parse-tree.c:801 fortran/dump-parse-tree.c:1742 #, c-format msgid ", " -msgstr "" +msgstr ", " #: fortran/dump-parse-tree.c:813 #, c-format msgid "symtree: %s Ambig %d" -msgstr "" +msgstr "symtree: %s Ambig %d" #: fortran/dump-parse-tree.c:816 #, c-format msgid " from namespace %s" -msgstr "" +msgstr " dari ruang nama %s" #: fortran/dump-parse-tree.c:842 #, c-format msgid "%s," -msgstr "" +msgstr "%s," #: fortran/dump-parse-tree.c:874 #, c-format msgid "!$OMP %s" -msgstr "" +msgstr "!$OMP %s" #: fortran/dump-parse-tree.c:889 fortran/dump-parse-tree.c:1032 #, c-format msgid " (%s)" -msgstr "" +msgstr " (%s)" #: fortran/dump-parse-tree.c:894 #, c-format msgid " (" -msgstr "" +msgstr " (" #: fortran/dump-parse-tree.c:910 #, c-format msgid " IF(" -msgstr "" +msgstr " IF(" #: fortran/dump-parse-tree.c:916 #, c-format msgid " NUM_THREADS(" -msgstr "" +msgstr " JUMLAH_THREADS(" #: fortran/dump-parse-tree.c:932 #, c-format msgid " SCHEDULE (%s" -msgstr "" +msgstr " JADWAL (%s" #: fortran/dump-parse-tree.c:952 #, c-format msgid " DEFAULT(%s)" -msgstr "" +msgstr " BAKU(%s)" #: fortran/dump-parse-tree.c:955 #, c-format msgid " ORDERED" -msgstr "" +msgstr " TERURUT" #: fortran/dump-parse-tree.c:980 #, c-format msgid " REDUCTION(%s:" -msgstr "" +msgstr " REDUKSI(%s:" #: fortran/dump-parse-tree.c:994 #, c-format msgid " %s(" -msgstr "" +msgstr " %s(" #: fortran/dump-parse-tree.c:1010 #, c-format msgid "!$OMP SECTION\n" -msgstr "" +msgstr "!$OMP BAGIAN\n" #: fortran/dump-parse-tree.c:1019 #, c-format msgid "!$OMP END %s" -msgstr "" +msgstr "!$OMP AKHIR %s" #: fortran/dump-parse-tree.c:1024 #, c-format msgid " COPYPRIVATE(" -msgstr "" +msgstr " SALINPRIVATE(" #: fortran/dump-parse-tree.c:1029 #, c-format msgid " NOWAIT" -msgstr "" +msgstr " TIDAKTUNGGU" #: fortran/dump-parse-tree.c:1056 #, c-format msgid "NOP" -msgstr "" +msgstr "NOP" #: fortran/dump-parse-tree.c:1060 #, c-format msgid "CONTINUE" -msgstr "" +msgstr "LANJUT" #: fortran/dump-parse-tree.c:1064 #, c-format msgid "ENTRY %s" -msgstr "" +msgstr "MASUKAN %s" #: fortran/dump-parse-tree.c:1069 #, c-format msgid "ASSIGN " -msgstr "" +msgstr "ASSIGN " #: fortran/dump-parse-tree.c:1076 #, c-format msgid "LABEL ASSIGN " -msgstr "" +msgstr "NAMA ASSIGN " #: fortran/dump-parse-tree.c:1078 #, c-format msgid " %d" -msgstr "" +msgstr " %d" #: fortran/dump-parse-tree.c:1082 #, c-format msgid "POINTER ASSIGN " -msgstr "" +msgstr "PENUNJUK ASSIGN " #: fortran/dump-parse-tree.c:1089 #, c-format msgid "GOTO " -msgstr "" +msgstr "GOTO " #: fortran/dump-parse-tree.c:1098 #, c-format msgid ", (" -msgstr "" +msgstr ", (" #: fortran/dump-parse-tree.c:1114 fortran/dump-parse-tree.c:1116 #, c-format msgid "CALL %s " -msgstr "" +msgstr "PANGGIL %s " #: fortran/dump-parse-tree.c:1118 #, c-format msgid "CALL ?? " -msgstr "" +msgstr "PANGGIL ?? " #: fortran/dump-parse-tree.c:1124 #, c-format msgid "RETURN " -msgstr "" +msgstr "KEMBALI " #: fortran/dump-parse-tree.c:1130 #, c-format msgid "PAUSE " -msgstr "" +msgstr "ISTIRAHAT " #: fortran/dump-parse-tree.c:1140 #, c-format msgid "STOP " -msgstr "" +msgstr "BERHENTI" #: fortran/dump-parse-tree.c:1150 fortran/dump-parse-tree.c:1158 #, c-format msgid "IF " -msgstr "" +msgstr "IF " #: fortran/dump-parse-tree.c:1152 #, c-format msgid " %d, %d, %d" -msgstr "" +msgstr " %d, %d, %d" #: fortran/dump-parse-tree.c:1169 #, c-format msgid "ELSE\n" -msgstr "" +msgstr "ELSE\n" #: fortran/dump-parse-tree.c:1172 #, c-format msgid "ELSE IF " -msgstr "" +msgstr "ELSE IF " #: fortran/dump-parse-tree.c:1182 #, c-format msgid "ENDIF" -msgstr "" +msgstr "ENDIF" #: fortran/dump-parse-tree.c:1187 #, c-format msgid "SELECT CASE " -msgstr "" +msgstr "SELECT CASE " #: fortran/dump-parse-tree.c:1195 #, c-format msgid "CASE " -msgstr "" +msgstr "CASE " #: fortran/dump-parse-tree.c:1211 #, c-format msgid "END SELECT" -msgstr "" +msgstr "END SELECT" #: fortran/dump-parse-tree.c:1215 #, c-format msgid "WHERE " -msgstr "" +msgstr "WHERE " #: fortran/dump-parse-tree.c:1226 #, c-format msgid "ELSE WHERE " -msgstr "" +msgstr "ELSE WHERE" #: fortran/dump-parse-tree.c:1233 #, c-format msgid "END WHERE" -msgstr "" +msgstr "END WHERE" #: fortran/dump-parse-tree.c:1238 #, c-format msgid "FORALL " -msgstr "" +msgstr "FORALL " #: fortran/dump-parse-tree.c:1263 #, c-format msgid "END FORALL" -msgstr "" +msgstr "END FORALL" #: fortran/dump-parse-tree.c:1267 #, c-format msgid "DO " -msgstr "" +msgstr "DO " #: fortran/dump-parse-tree.c:1281 fortran/dump-parse-tree.c:1292 #, c-format msgid "END DO" -msgstr "" +msgstr "END DO" #: fortran/dump-parse-tree.c:1285 #, c-format msgid "DO WHILE " -msgstr "" +msgstr "DO WHILE " #: fortran/dump-parse-tree.c:1296 #, c-format msgid "CYCLE" -msgstr "" +msgstr "CYCLE" #: fortran/dump-parse-tree.c:1302 #, c-format msgid "EXIT" -msgstr "" +msgstr "KELUAR" #: fortran/dump-parse-tree.c:1308 #, c-format msgid "ALLOCATE " -msgstr "" +msgstr "ALOKASIKAN " #: fortran/dump-parse-tree.c:1311 fortran/dump-parse-tree.c:1327 #, c-format msgid " STAT=" -msgstr "" +msgstr " STAT=" #: fortran/dump-parse-tree.c:1324 #, c-format msgid "DEALLOCATE " -msgstr "" +msgstr "DEALOKASIKAN " #: fortran/dump-parse-tree.c:1340 #, c-format msgid "OPEN" -msgstr "" +msgstr "BUKA" #: fortran/dump-parse-tree.c:1345 fortran/dump-parse-tree.c:1424 #: fortran/dump-parse-tree.c:1466 fortran/dump-parse-tree.c:1489 #: fortran/dump-parse-tree.c:1641 #, c-format msgid " UNIT=" -msgstr "" +msgstr " SATUAN=" #: fortran/dump-parse-tree.c:1350 fortran/dump-parse-tree.c:1429 #: fortran/dump-parse-tree.c:1471 fortran/dump-parse-tree.c:1500 #: fortran/dump-parse-tree.c:1658 #, c-format msgid " IOMSG=" -msgstr "" +msgstr " IOMSG=" #: fortran/dump-parse-tree.c:1355 fortran/dump-parse-tree.c:1434 #: fortran/dump-parse-tree.c:1476 fortran/dump-parse-tree.c:1505 #: fortran/dump-parse-tree.c:1663 #, c-format msgid " IOSTAT=" -msgstr "" +msgstr " IOSTAT=" #: fortran/dump-parse-tree.c:1360 fortran/dump-parse-tree.c:1494 #, c-format msgid " FILE=" -msgstr "" +msgstr " BERKAS=" #: fortran/dump-parse-tree.c:1365 fortran/dump-parse-tree.c:1439 #, c-format msgid " STATUS=" -msgstr "" +msgstr " STATUS=" #: fortran/dump-parse-tree.c:1370 fortran/dump-parse-tree.c:1535 #, c-format msgid " ACCESS=" -msgstr "" +msgstr " AKSES=" #: fortran/dump-parse-tree.c:1375 fortran/dump-parse-tree.c:1551 #, c-format msgid " FORM=" -msgstr "" +msgstr " FORM=" #: fortran/dump-parse-tree.c:1380 fortran/dump-parse-tree.c:1566 #, c-format msgid " RECL=" -msgstr "" +msgstr " RECL=" #: fortran/dump-parse-tree.c:1385 fortran/dump-parse-tree.c:1576 #, c-format msgid " BLANK=" -msgstr "" +msgstr " BLANK=" #: fortran/dump-parse-tree.c:1390 fortran/dump-parse-tree.c:1581 #, c-format msgid " POSITION=" -msgstr "" +msgstr " POSISI=" #: fortran/dump-parse-tree.c:1395 fortran/dump-parse-tree.c:1586 #, c-format msgid " ACTION=" -msgstr "" +msgstr " AKSI=" #: fortran/dump-parse-tree.c:1400 fortran/dump-parse-tree.c:1606 #, c-format msgid " DELIM=" -msgstr "" +msgstr " PEMBATAS=" #: fortran/dump-parse-tree.c:1405 fortran/dump-parse-tree.c:1611 #, c-format msgid " PAD=" -msgstr "" +msgstr " PAD=" #: fortran/dump-parse-tree.c:1410 fortran/dump-parse-tree.c:1616 #, c-format msgid " CONVERT=" -msgstr "" +msgstr " UBAH=" #: fortran/dump-parse-tree.c:1414 fortran/dump-parse-tree.c:1443 #: fortran/dump-parse-tree.c:1480 fortran/dump-parse-tree.c:1621 #: fortran/dump-parse-tree.c:1698 #, c-format msgid " ERR=%d" -msgstr "" +msgstr " ERR=%d" #: fortran/dump-parse-tree.c:1419 #, c-format msgid "CLOSE" -msgstr "" +msgstr "TUTUP" #: fortran/dump-parse-tree.c:1447 #, c-format msgid "BACKSPACE" -msgstr "" +msgstr "BACKSPACE" #: fortran/dump-parse-tree.c:1451 #, c-format msgid "ENDFILE" -msgstr "" +msgstr "AKHIRBERKAS" #: fortran/dump-parse-tree.c:1455 #, c-format msgid "REWIND" -msgstr "" +msgstr "REWIND" #: fortran/dump-parse-tree.c:1459 #, c-format msgid "FLUSH" -msgstr "" +msgstr "FLUSH" #: fortran/dump-parse-tree.c:1484 #, c-format msgid "INQUIRE" -msgstr "" +msgstr "INQUIRE" #: fortran/dump-parse-tree.c:1510 #, c-format msgid " EXIST=" -msgstr "" +msgstr " KELUAR=" #: fortran/dump-parse-tree.c:1515 #, c-format msgid " OPENED=" -msgstr "" +msgstr " TERBUKA=" #: fortran/dump-parse-tree.c:1520 #, c-format msgid " NUMBER=" -msgstr "" +msgstr " NOMOR=" #: fortran/dump-parse-tree.c:1525 #, c-format msgid " NAMED=" -msgstr "" +msgstr " BERNAMA=" #: fortran/dump-parse-tree.c:1530 #, c-format msgid " NAME=" -msgstr "" +msgstr " NAMA=" #: fortran/dump-parse-tree.c:1540 #, c-format msgid " SEQUENTIAL=" -msgstr "" +msgstr " BERURUT=" #: fortran/dump-parse-tree.c:1546 #, c-format msgid " DIRECT=" -msgstr "" +msgstr " LANGSUNG=" #: fortran/dump-parse-tree.c:1556 #, c-format msgid " FORMATTED" -msgstr "" +msgstr " TERFORMAT" #: fortran/dump-parse-tree.c:1561 #, c-format msgid " UNFORMATTED=" -msgstr "" +msgstr " TIDAK-TERFORMAT=" #: fortran/dump-parse-tree.c:1571 #, c-format msgid " NEXTREC=" -msgstr "" +msgstr " REC-SELANJUTNYA=" #: fortran/dump-parse-tree.c:1591 #, c-format msgid " READ=" -msgstr "" +msgstr " BACA=" #: fortran/dump-parse-tree.c:1596 #, c-format msgid " WRITE=" -msgstr "" +msgstr " TULIS=" #: fortran/dump-parse-tree.c:1601 #, c-format msgid " READWRITE=" -msgstr "" +msgstr " BACA-TULIS=" #: fortran/dump-parse-tree.c:1625 #, c-format msgid "IOLENGTH " -msgstr "" +msgstr "PANJANG-IO " #: fortran/dump-parse-tree.c:1631 #, c-format msgid "READ" -msgstr "" +msgstr "BACA" #: fortran/dump-parse-tree.c:1635 #, c-format msgid "WRITE" -msgstr "" +msgstr "TULIS" #: fortran/dump-parse-tree.c:1647 #, c-format msgid " FMT=" -msgstr "" +msgstr " FMT=" #: fortran/dump-parse-tree.c:1652 #, c-format msgid " FMT=%d" -msgstr "" +msgstr " FMT=%d" #: fortran/dump-parse-tree.c:1654 #, c-format msgid " NML=%s" -msgstr "" +msgstr " NML=%s" #: fortran/dump-parse-tree.c:1668 #, c-format msgid " SIZE=" -msgstr "" +msgstr " UKURAN=" #: fortran/dump-parse-tree.c:1673 #, c-format msgid " REC=" -msgstr "" +msgstr " REC=" #: fortran/dump-parse-tree.c:1678 #, c-format msgid " ADVANCE=" -msgstr "" +msgstr " ADVANCE=" #: fortran/dump-parse-tree.c:1689 #, c-format msgid "TRANSFER " -msgstr "" +msgstr "TRANSFER " #: fortran/dump-parse-tree.c:1694 #, c-format msgid "DT_END" -msgstr "" +msgstr "DT_END" #: fortran/dump-parse-tree.c:1700 #, c-format msgid " END=%d" -msgstr "" +msgstr " AKHIR=%d" #: fortran/dump-parse-tree.c:1702 #, c-format msgid " EOR=%d" -msgstr "" +msgstr " EOR=%d" #: fortran/dump-parse-tree.c:1736 #, c-format msgid "Equivalence: " -msgstr "" +msgstr "Sama dengan: " #: fortran/dump-parse-tree.c:1762 #, c-format msgid "Namespace:" -msgstr "" +msgstr "Ruang nama:" #: fortran/dump-parse-tree.c:1776 #, c-format msgid " %c-%c: " -msgstr "" +msgstr " %c-%c: " #: fortran/dump-parse-tree.c:1778 #, c-format msgid " %c: " -msgstr "" +msgstr " %c: " #: fortran/dump-parse-tree.c:1787 #, c-format msgid "procedure name = %s" -msgstr "" +msgstr "nama prosedur = %s" #: fortran/dump-parse-tree.c:1803 #, c-format msgid "Operator interfaces for %s:" -msgstr "" +msgstr "Antar-muka operator untuk %s:" #: fortran/dump-parse-tree.c:1812 #, c-format msgid "User operators:\n" -msgstr "" +msgstr "Operator pengguna:\n" #: fortran/dump-parse-tree.c:1828 #, c-format msgid "CONTAINS\n" -msgstr "" +msgstr "BERISI\n" #: fortran/error.c:213 #, no-c-format msgid " Included at %s:%d:" -msgstr "" +msgstr " Termasuk di %s:%d:" #: fortran/error.c:318 #, no-c-format msgid "<During initialization>\n" -msgstr "" +msgstr "<Selama inisialisasi>\n" #: fortran/error.c:651 #, no-c-format msgid "Error count reached limit of %d." -msgstr "" +msgstr "Jumlah error mencapai batas dari %d." #: fortran/error.c:670 fortran/error.c:724 fortran/error.c:761 msgid "Warning:" -msgstr "" +msgstr "Peringatan:" #: fortran/error.c:726 fortran/error.c:809 fortran/error.c:835 msgid "Error:" -msgstr "" +msgstr "Error:" #: fortran/error.c:859 msgid "Fatal Error:" -msgstr "" +msgstr "Fatal Error:" #: fortran/error.c:878 #, no-c-format msgid "Internal Error at (1):" -msgstr "" +msgstr "Internal error di (1):" #: fortran/expr.c:253 #, c-format msgid "Constant expression required at %C" -msgstr "" +msgstr "Ekspresi konstan dibutuhkan di %C" #: fortran/expr.c:256 #, c-format msgid "Integer expression required at %C" -msgstr "" +msgstr "Ekspresi integer dibutuhkan di %C" #: fortran/expr.c:261 #, c-format msgid "Integer value too large in expression at %C" -msgstr "" +msgstr "Nilai integer terlalu besar dalam ekspresi di %C" #: fortran/expr.c:1037 #, no-c-format msgid "Index in dimension %d is out of bounds at %L" -msgstr "" +msgstr "Indeks dalam dimensi %d diluar dari jangkauan di %L" #: fortran/expr.c:1208 fortran/expr.c:1259 #, no-c-format msgid "index in dimension %d is out of bounds at %L" -msgstr "" +msgstr "indeks dalam dimensi %d diluar dari jangkauan di %L" #: fortran/expr.c:1808 #, no-c-format msgid "elemental function arguments at %C are not compliant" -msgstr "" +msgstr "argumen fungsi elemen di %C tidak komplian" #: fortran/expr.c:1852 #, no-c-format msgid "Numeric or CHARACTER operands are required in expression at %L" -msgstr "" +msgstr "Operan numerik atau KARAKTER dibutuhkan dalam ekspresi di %L" #: fortran/expr.c:1872 #, no-c-format msgid "Fortran 2003: Noninteger exponent in an initialization expression at %L" -msgstr "" +msgstr "Fortran 2003: eksponen bukan integer dalam sebuah ekspresi inisialisasi di %L" #: fortran/expr.c:1887 #, no-c-format msgid "Concatenation operator in expression at %L must have two CHARACTER operands" -msgstr "" +msgstr "Operator konkatenasi dalam ekspresi di %L harus memiliki dua operan KARAKTER" #: fortran/expr.c:1894 #, no-c-format msgid "Concat operator at %L must concatenate strings of the same kind" -msgstr "" +msgstr "Operator konkatenasi di %L harus konkatenasi string dari tipe yang sama" #: fortran/expr.c:1904 #, no-c-format msgid ".NOT. operator in expression at %L must have a LOGICAL operand" -msgstr "" +msgstr "operator .NOT. dalam ekspresi di %L harus memiliki sebuah operan LOGIKAL" #: fortran/expr.c:1920 #, no-c-format msgid "LOGICAL operands are required in expression at %L" -msgstr "" +msgstr "operan LOGICAL dibutuhkan dalam ekspresi di %L" #: fortran/expr.c:1931 #, no-c-format msgid "Only intrinsic operators can be used in expression at %L" -msgstr "" +msgstr "Hanya intrinsik operator yang dapat digunakan dalam ekspresi di %L" #: fortran/expr.c:1939 #, no-c-format msgid "Numeric operands are required in expression at %L" -msgstr "" +msgstr "Operan numerik dibutuhkan dalam ekspresi di %L" #: fortran/expr.c:2030 #, no-c-format msgid "Assumed character length variable '%s' in constant expression at %L" -msgstr "" +msgstr "Diasumsikan panjang karakter variabel '%s' dalam ekspresi konstanta di %L" #: fortran/expr.c:2076 fortran/expr.c:2082 #, no-c-format msgid "transformational intrinsic '%s' at %L is not permitted in an initialization expression" -msgstr "" +msgstr "intrinsik transformational '%s' di %L tidak diijinkan dalam sebuah ekspresi inisialisasi" #: fortran/expr.c:2114 #, no-c-format msgid "Extension: Evaluation of nonstandard initialization expression at %L" -msgstr "" +msgstr "Ekstensi: Evaluasi dari ekspresi inisialisasi ekpresi tidak baku di %L" #: fortran/expr.c:2167 #, no-c-format msgid "Function '%s' in initialization expression at %L must be an intrinsic or a specification function" -msgstr "" +msgstr "Fungsi '%s' dalam ekspresi inisialisasi di %L harus berupa sebuah intrinsik atau sebuah spesifikasi fungsi" #: fortran/expr.c:2179 #, no-c-format msgid "Intrinsic function '%s' at %L is not permitted in an initialization expression" -msgstr "" +msgstr "Fungsi intrinsik '%s' di %L tidak diperbolehkan dalam sebuah ekspresi inisialisasi" #: fortran/expr.c:2214 #, no-c-format msgid "PARAMETER '%s' is used at %L before its definition is complete" -msgstr "" +msgstr "PARAMTER '%s' digunakan di %L sebelum definisinya lengkap" #: fortran/expr.c:2234 #, no-c-format msgid "Assumed size array '%s' at %L is not permitted in an initialization expression" -msgstr "" +msgstr "Diasumsikan ukuran array '%s' di %L tidak diijinkan dalam sebuah ekspresi inisialisasi" #: fortran/expr.c:2240 #, no-c-format msgid "Assumed shape array '%s' at %L is not permitted in an initialization expression" -msgstr "" +msgstr "Diasumsikan bentuk array '%s' di %L tidak diijinkan dalam sebuah ekspresi inisialisasi" #: fortran/expr.c:2246 #, no-c-format msgid "Deferred array '%s' at %L is not permitted in an initialization expression" -msgstr "" +msgstr "Deferred array '%s' di %L tidak diijinkan dalam sebuah ekspresi inisialisasi" #: fortran/expr.c:2252 #, no-c-format msgid "Array '%s' at %L is a variable, which does not reduce to a constant expression" -msgstr "" +msgstr "Array '%s' di %L bukan sebuah variabel, yang tidak mereduksi ke sebuah ekspresi konstanta" #: fortran/expr.c:2262 #, no-c-format msgid "Parameter '%s' at %L has not been declared or is a variable, which does not reduce to a constant expression" -msgstr "" +msgstr "Parameter '%s' di %L belum terdeklarasi atau sebuah variabel, yang tidak mereduksi ke sebuah ekspresi konstan" #: fortran/expr.c:2350 #, no-c-format msgid "Initialization expression didn't reduce %C" -msgstr "" +msgstr "Eksrepsi inisialisasi tidak mereduksi %C" #: fortran/expr.c:2393 #, no-c-format msgid "Specification function '%s' at %L cannot be a statement function" -msgstr "" +msgstr "Fungsi spesifikasi '%s' di %L tidak dapat berupa sebuah pernyataan fungsi" #: fortran/expr.c:2400 #, no-c-format msgid "Specification function '%s' at %L cannot be an internal function" -msgstr "" +msgstr "Spesifikasi fungsi '%s' di %L tidak dapat berupa sebuah internal fungsi" #: fortran/expr.c:2407 #, no-c-format msgid "Specification function '%s' at %L must be PURE" -msgstr "" +msgstr "Spesifikasi fungsi '%s' di %L harus berupa PURE" #: fortran/expr.c:2414 #, no-c-format msgid "Specification function '%s' at %L cannot be RECURSIVE" -msgstr "" +msgstr "Spesifikasi fungsi '%s' di %L tidak dapat REKURSIF" #: fortran/expr.c:2476 #, no-c-format msgid "Dummy argument '%s' not allowed in expression at %L" -msgstr "" +msgstr "Dummy argumen '%s' tidak diijinkan dalam ekspresi di %L" #: fortran/expr.c:2483 #, no-c-format msgid "Dummy argument '%s' at %L cannot be OPTIONAL" -msgstr "" +msgstr "Dummy argumen '%s' di %L tidak dapat berupa OPSIONAL" #: fortran/expr.c:2490 #, no-c-format msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)" -msgstr "" +msgstr "Dummy argumen '%s' di %L tidak dapat berupa INTENT(OUT)" #: fortran/expr.c:2513 #, no-c-format msgid "Variable '%s' cannot appear in the expression at %L" -msgstr "" +msgstr "Variabel '%s' tidak dapat muncul dalam ekspresi di %L" #: fortran/expr.c:2562 #, no-c-format msgid "Expression at %L must be of INTEGER type" -msgstr "" +msgstr "Ekspresi di %L harus berupa tipe INTEGER" #: fortran/expr.c:2571 #, no-c-format msgid "Function '%s' at %L must be PURE" -msgstr "" +msgstr "Fungsi '%s' di %L harus berupa PURE" #: fortran/expr.c:2580 #, no-c-format msgid "Expression at %L must be scalar" -msgstr "" +msgstr "Ekspresi di %L harus berupa skalar" #: fortran/expr.c:2607 #, no-c-format msgid "Incompatible ranks in %s (%d and %d) at %L" -msgstr "" +msgstr "Tingkat tidak kompatibel dalam %s (%d dan %d) di %L" #: fortran/expr.c:2621 #, no-c-format msgid "Different shape for %s at %L on dimension %d (%d and %d)" -msgstr "" +msgstr "Bentuk berbeda untuk %s di %L dalam dimensi %d (%d dan %d)" #: fortran/expr.c:2667 fortran/expr.c:2884 #, no-c-format msgid "Cannot assign to INTENT(IN) variable '%s' at %L" -msgstr "" +msgstr "Tidak dapat menempatkan variabel INTENT(IN) '%s' di %L" #: fortran/expr.c:2719 #, no-c-format msgid "'%s' at %L is not a VALUE" -msgstr "" +msgstr "'%s' di %L bukan sebuah NILAI" #: fortran/expr.c:2726 #, no-c-format msgid "Incompatible ranks %d and %d in assignment at %L" -msgstr "" +msgstr "Tingkat tidak kompatibel %d dan %d dalam penempatan di %L" #: fortran/expr.c:2733 #, no-c-format msgid "Variable type is UNKNOWN in assignment at %L" -msgstr "" +msgstr "Tipe variabel adalah TIDAK DIKETAHUI dalam penempatan di %L" #: fortran/expr.c:2745 #, no-c-format msgid "NULL appears on right-hand side in assignment at %L" -msgstr "" +msgstr "NULL muncul di sisi kanan dalam penempatan di %L" #: fortran/expr.c:2756 #, no-c-format msgid "Vector assignment to assumed-size Cray Pointee at %L is illegal" -msgstr "" +msgstr "Penempatan vektor ke ukuran-diasumsikan Cray Pointee di %L adalah tidak legal" #: fortran/expr.c:2765 #, no-c-format msgid "POINTER valued function appears on right-hand side of assignment at %L" -msgstr "" +msgstr "fungsi dinilai POINTER muncul di sisi kanan dari penempatan di %L" #: fortran/expr.c:2770 msgid "array assignment" -msgstr "" +msgstr "penempatan array" #: fortran/expr.c:2775 #, no-c-format msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'" -msgstr "" +msgstr "Ekstensi: BOZ literal di %L digunakan untuk menginisialisasi variabel bukan-integer '%s'" #: fortran/expr.c:2781 fortran/resolve.c:6058 #, no-c-format msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX" -msgstr "" +msgstr "Ekstensi: BOZ literal di %L diluar sebuah pernyataan DATA dan diluar INT/REAL/DBLE/CMPLX" #: fortran/expr.c:2791 fortran/resolve.c:6068 #, no-c-format msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'" -msgstr "" +msgstr "BOZ literal di %L adalah bitwise dapat ditransfer bukan-integer simbol '%s'" #: fortran/expr.c:2799 fortran/resolve.c:6077 #, no-c-format msgid "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check" -msgstr "" +msgstr "Aritmetik underflow dari bit-wise dipindahkan BOZ di %L. Pemeriksaan ini dapat dinon-aktifkan dengan opsi -fno-range-check" #: fortran/expr.c:2803 fortran/resolve.c:6081 #, no-c-format msgid "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check" -msgstr "" +msgstr "Aritmetik overflow dari bit-wise dipindahkan BOZ di %L. Pemeriksaan ini dapat dinonaktifkan dengan opsi -fno-range-check" #: fortran/expr.c:2807 fortran/resolve.c:6085 #, no-c-format msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled with the option -fno-range-check" -msgstr "" +msgstr "Aritmetik NaN dari bit-wise dipindahkan BOZ di %L. Pemeriksaan ini dapat dinon-aktifkan dengan opsi -fno-range-check" #: fortran/expr.c:2828 #, no-c-format msgid "Incompatible types in assignment at %L, %s to %s" -msgstr "" +msgstr "Tipe tidak kompatibel dalam penempatan di %L, %s ke %s" #: fortran/expr.c:2853 #, no-c-format msgid "Pointer assignment target is not a POINTER at %L" -msgstr "" +msgstr "Penempatan target penunjuk bukan sebuah PENUNJUK di %L" #: fortran/expr.c:2861 #, no-c-format msgid "'%s' in the pointer assignment at %L cannot be an l-value since it is a procedure" -msgstr "" +msgstr "'%s' dalam penempatan penunjuk di %L tidak dapat berupa sebuah nilai-kiri karena iniadalah sebuah prosedur" #: fortran/expr.c:2891 #, no-c-format msgid "Pointer assignment to non-POINTER at %L" -msgstr "" +msgstr "Penempatan penunjuk ke bukan-PENUNJUK di %L" #: fortran/expr.c:2900 #, no-c-format msgid "Bad pointer object in PURE procedure at %L" -msgstr "" +msgstr "Objek penunjuk buruk dalam prosedur PURE di %L" #: fortran/expr.c:2912 #, no-c-format msgid "Different types in pointer assignment at %L" -msgstr "" +msgstr "Tipe berbeda dalam penempatan penunjuk di %L" #: fortran/expr.c:2919 #, no-c-format msgid "Different kind type parameters in pointer assignment at %L" -msgstr "" +msgstr "Jenis parameter berbeda dalam penempatan penunjuk di %L" #: fortran/expr.c:2926 #, no-c-format msgid "Different ranks in pointer assignment at %L" -msgstr "" +msgstr "Tingkat berbeda dalam penempatan penunjuk di %L" #: fortran/expr.c:2941 #, no-c-format msgid "Different character lengths in pointer assignment at %L" -msgstr "" +msgstr "Panjang karakter berbeda dalam penempatan penunjuk di %L" #: fortran/expr.c:2952 #, no-c-format msgid "Pointer assignment target is neither TARGET nor POINTER at %L" -msgstr "" +msgstr "Target penempatan penunjun baik bukan TARGET ataupun PENUNJUN di %L" #: fortran/expr.c:2959 #, no-c-format msgid "Bad target in pointer assignment in PURE procedure at %L" -msgstr "" +msgstr "Target buruk dalam penempatan penunjuk dalam prosedur PURE di %L" #: fortran/expr.c:2965 #, no-c-format msgid "Pointer assignment with vector subscript on rhs at %L" -msgstr "" +msgstr "Penempatan penunjuk dengan subscrip vektori di rhs di %L" #: fortran/expr.c:2972 #, no-c-format msgid "Pointer assigment target has PROTECTED attribute at %L" -msgstr "" +msgstr "Target penempatan penunjuk memiliki atribut terproteksi di %L" #: fortran/gfortranspec.c:248 #, c-format msgid "overflowed output arg list for '%s'" -msgstr "" +msgstr "overflowed output daftar argumen untuk '%s'" #: fortran/gfortranspec.c:381 #, c-format @@ -6492,970 +6492,975 @@ msgid "" "For more information about these matters, see the file named COPYING\n" "\n" msgstr "" +"GNU Fortran datand dengan TANPA GARANSI, sampai batas yang diijinkan oleh hukum.\n" +"Anda boleh meredistribusikan salinan dari GNU Fortran\n" +"Dibawah lisensi dari GNU General Public License.\n" +"Untuk informasi lebih lanjut mengenai masalah ini, lihat berkas bernama COPYING\n" +"\n" #: fortran/gfortranspec.c:403 #, c-format msgid "argument to '%s' missing" -msgstr "" +msgstr "argumen ke '%s' hilang" #: fortran/gfortranspec.c:407 #, c-format msgid "no input files; unwilling to write output files" -msgstr "" +msgstr "tidak ada berkas masukan; tidak ingin menulis ke berkas keluaran" #: fortran/gfortranspec.c:566 #, c-format msgid "Driving:" -msgstr "" +msgstr "Driving:" #: fortran/interface.c:173 #, no-c-format msgid "Syntax error in generic specification at %C" -msgstr "" +msgstr "Sintaks error dalam spesifikasi umum di %C" #: fortran/interface.c:200 #, no-c-format msgid "Syntax error: Trailing garbage in INTERFACE statement at %C" -msgstr "" +msgstr "Sintaks error: Akhiran sampah dalam pernyataan ANTAR-MUKA di %C" #: fortran/interface.c:219 #, no-c-format msgid "Dummy procedure '%s' at %C cannot have a generic interface" -msgstr "" +msgstr "Prosedur dummy '%s' di %C tidak dapat memiliki sebuah antar-muka umum" #: fortran/interface.c:252 #, no-c-format msgid "Fortran 2003: ABSTRACT INTERFACE at %C" -msgstr "" +msgstr "Fortran 2003: ANTAR-MUKA ABSTRAK di %C" #: fortran/interface.c:260 #, no-c-format msgid "Syntax error in ABSTRACT INTERFACE statement at %C" -msgstr "" +msgstr "Sintaks error dalam pernyataan ANTAR-MUKA ABSTRAKS di %C" #: fortran/interface.c:291 #, no-c-format msgid "Syntax error: Trailing garbage in END INTERFACE statement at %C" -msgstr "" +msgstr "Sintaks error: Akhiran sampah di pernyataan AKHIR ANTAR-MUKA di %C" #: fortran/interface.c:304 #, no-c-format msgid "Expected a nameless interface at %C" -msgstr "" +msgstr "Diduga sebuah antar-muka tidak-bernama di %C" #: fortran/interface.c:315 #, no-c-format msgid "Expected 'END INTERFACE ASSIGNMENT (=)' at %C" -msgstr "" +msgstr "Diduga 'AKHIR ANTAR-MUKA PENEMPATAN (=)' di %C" #: fortran/interface.c:317 #, no-c-format msgid "Expecting 'END INTERFACE OPERATOR (%s)' at %C" -msgstr "" +msgstr "diduga 'AKHIR ANTAR-MUKA OPERATOR (%s)' di %C" #: fortran/interface.c:331 #, no-c-format msgid "Expecting 'END INTERFACE OPERATOR (.%s.)' at %C" -msgstr "" +msgstr "Diduga 'AKHIR ANTAR-MUKA OPERATOR (.%s.)' di %C" #: fortran/interface.c:342 #, no-c-format msgid "Expecting 'END INTERFACE %s' at %C" -msgstr "" +msgstr "Diduga 'AKHIR ANTAR-MUKA %s' di %C" #: fortran/interface.c:563 #, no-c-format msgid "Alternate return cannot appear in operator interface at %L" -msgstr "" +msgstr "Kembali alternatif tidak dapat muncul dalam antar-muka operator di %L" #: fortran/interface.c:593 #, no-c-format msgid "Operator interface at %L has the wrong number of arguments" -msgstr "" +msgstr "Operator antar-muka di %L memiliki jumlah argumen yang salah" #: fortran/interface.c:604 #, no-c-format msgid "Assignment operator interface at %L must be a SUBROUTINE" -msgstr "" +msgstr "Penempatan antar-muka operator di %L harus sebuah SUBROUTINE" #: fortran/interface.c:610 #, no-c-format msgid "Assignment operator interface at %L must have two arguments" -msgstr "" +msgstr "Penempatan operator antar-muka di %L harus memiliki dua argumen" #: fortran/interface.c:620 #, no-c-format msgid "Assignment operator interface at %L must not redefine an INTRINSIC type assignment" -msgstr "" +msgstr "Penempatan operator antar-muka di %L tidak boleh meredefinisi penempatan sebuah tipe INTRINSIK" #: fortran/interface.c:629 #, no-c-format msgid "Intrinsic operator interface at %L must be a FUNCTION" -msgstr "" +msgstr "Intrinsik operator antar-muka di %L harus sebuah FUNGSI" #: fortran/interface.c:639 #, no-c-format msgid "First argument of defined assignment at %L must be INTENT(IN) or INTENT(INOUT)" -msgstr "" +msgstr "Argumen pertama dari penempatan yang didefinisikan di %L harus berupa INTENT(IN) atau INTENT(INOUT)" #: fortran/interface.c:643 #, no-c-format msgid "Second argument of defined assignment at %L must be INTENT(IN)" -msgstr "" +msgstr "Argumen kedua dari penempatan didefinisikan di %L harus berupa INTENT(IN)" #: fortran/interface.c:649 fortran/resolve.c:8998 #, no-c-format msgid "First argument of operator interface at %L must be INTENT(IN)" -msgstr "" +msgstr "Argumen pertama dari antar-muka operator di %L harus berupa INTENT(IN)" #: fortran/interface.c:653 fortran/resolve.c:9010 #, no-c-format msgid "Second argument of operator interface at %L must be INTENT(IN)" -msgstr "" +msgstr "Argumen kedua dari antar-muka operator di %L harus berupa INTENT(IN)" #: fortran/interface.c:756 #, no-c-format msgid "Operator interface at %L conflicts with intrinsic interface" -msgstr "" +msgstr "Antar-muka operator di %L konflik dengan antar-muka intrinsik" #: fortran/interface.c:1117 #, no-c-format msgid "Procedure '%s' in %s at %L has no explicit interface" -msgstr "" +msgstr "Prosedur '%s' dalam %s di %L tidak memiliki antar-muka eksplisit" #: fortran/interface.c:1120 #, no-c-format msgid "Procedure '%s' in %s at %L is neither function nor subroutine" -msgstr "" +msgstr "Prosedur '%s' dalam %s di %L bukan sebuah fungsi atau subrutin" #: fortran/interface.c:1175 fortran/interface.c:1181 #, no-c-format msgid "Ambiguous interfaces '%s' and '%s' in %s at %L" -msgstr "" +msgstr "Interface ambigu '%s' dan '%s' dalam %s di %L" #: fortran/interface.c:1217 #, no-c-format msgid "'%s' at %L is not a module procedure" -msgstr "" +msgstr "'%s' di %L bukan sebuah prosedur module" #: fortran/interface.c:1465 fortran/interface.c:2411 #, no-c-format msgid "Type/rank mismatch in argument '%s' at %L" -msgstr "" +msgstr "Tipe/tingkat tidak cocok dalam argumen '%s' di %L" #: fortran/interface.c:1474 #, no-c-format msgid "Type mismatch in argument '%s' at %L; passed %s to %s" -msgstr "" +msgstr "Tipe tidak cocok dalam argumen '%s' di %L; dilewatkan %s ke %s" #: fortran/interface.c:1492 fortran/interface.c:1532 #, no-c-format msgid "Rank mismatch in argument '%s' at %L (%d and %d)" -msgstr "" +msgstr "Tingkat tidak cocok dalam argumen '%s' di %L (%d dan %d)" #: fortran/interface.c:1519 #, no-c-format msgid "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument '%s' at %L" -msgstr "" +msgstr "Fortran 2003: Skalar KARAKTER aktual argumen dengan array dummy argumen '%s' di %L" #: fortran/interface.c:1544 #, no-c-format msgid "Element of assumed-shaped array passed to dummy argument '%s' at %L" -msgstr "" +msgstr "Elemen dari array bentuk-diasumsikan dilewatkan ke argumen dummy '%s' di %L" #: fortran/interface.c:1861 #, no-c-format msgid "Keyword argument '%s' at %L is not in the procedure" -msgstr "" +msgstr "Kata kunci argumen '%s' di %L tidak dalam prosedur" #: fortran/interface.c:1869 #, no-c-format msgid "Keyword argument '%s' at %L is already associated with another actual argument" -msgstr "" +msgstr "Argumen kata-kunci '%s' di %L telah berasosiasi dengan argumen aktual lain" #: fortran/interface.c:1879 #, no-c-format msgid "More actual than formal arguments in procedure call at %L" -msgstr "" +msgstr "Lebih aktual daripada formal argumen dalam pemanggilan prosedur di %L" #: fortran/interface.c:1891 fortran/interface.c:2110 #, no-c-format msgid "Missing alternate return spec in subroutine call at %L" -msgstr "" +msgstr "Hilang alternatif spesifikasi kembali dalam pemanggilan subroutine di %L" #: fortran/interface.c:1899 #, no-c-format msgid "Unexpected alternate return spec in subroutine call at %L" -msgstr "" +msgstr "Tidak terduga alternaatif spesifikasi kembali dalam pemanggilan subroutine di %L" #: fortran/interface.c:1922 #, no-c-format msgid "Character length mismatch (%ld/%ld) between actual argument and pointer or allocatable dummy argument '%s' at %L" -msgstr "" +msgstr "Panjang karakter tidak cocok (%ld/%ld) diantara argumen aktual dan penunjuk atau dapat dialokasikan argumen dummy '%s' di %L" #: fortran/interface.c:1929 #, no-c-format msgid "Character length mismatch (%ld/%ld) between actual argument and assumed-shape dummy argument '%s' at %L" -msgstr "" +msgstr "Panjang karakter tidak cocok (%ld/%ld) diantara argumen aktual dan diasumsikan-bentuk argumen dummy '%s' di %L" #: fortran/interface.c:1943 #, no-c-format msgid "Character length of actual argument shorter than of dummy argument '%s' (%lu/%lu) at %L" -msgstr "" +msgstr "Panjang karakter dari argumen aktual lebih pendek dari argumen dummy '%s' (%lu/%lu) di %L" #: fortran/interface.c:1948 #, no-c-format msgid "Actual argument contains too few elements for dummy argument '%s' (%lu/%lu) at %L" -msgstr "" +msgstr "Argumen aktual berisi terlalu sedikit elemen untuk argumen dummy '%s' (%lu/%lu) di %L" #: fortran/interface.c:1962 #, no-c-format msgid "Expected a procedure for argument '%s' at %L" -msgstr "" +msgstr "Diduga sebuah prosedur untuk argumen '%s' di %L" #: fortran/interface.c:1972 #, no-c-format msgid "Expected a PURE procedure for argument '%s' at %L" -msgstr "" +msgstr "Diduga sebuah PURE prosedur untuk argumen '%s' di %L" #: fortran/interface.c:1986 #, no-c-format msgid "Actual argument for '%s' cannot be an assumed-size array at %L" -msgstr "" +msgstr "Aktual argumen untuk '%s' tidak dapat diasumsikan array berukuran di %L" #: fortran/interface.c:1995 #, no-c-format msgid "Actual argument for '%s' must be a pointer at %L" -msgstr "" +msgstr "Aktual argumen untuk '%s' harus berupa sebuah penunjuk di %L" #: fortran/interface.c:2004 #, no-c-format msgid "Actual argument for '%s' must be ALLOCATABLE at %L" -msgstr "" +msgstr "Aktual argumen untuk '%s' harus DAPAT DIALOKASIKAN di %L" #: fortran/interface.c:2017 #, no-c-format msgid "Actual argument at %L must be definable as the dummy argument '%s' is INTENT = OUT/INOUT" -msgstr "" +msgstr "Aktual argumen di %L harus dapat didefinisikan sebagai sebuah dummy argumen '%s' adalah INTENT = OUT/INOUT" #: fortran/interface.c:2026 #, no-c-format msgid "Actual argument at %L is use-associated with PROTECTED attribute and dummy argument '%s' is INTENT = OUT/INOUT" -msgstr "" +msgstr "Aktual argumen di %L adalah diassosiasikan guna dengan atribut TERPROTEKSI dan dummy argumen '%s' adalah INTENT = OUT/INOUT" #: fortran/interface.c:2039 #, no-c-format msgid "Array-section actual argument with vector subscripts at %L is incompatible with INTENT(OUT), INTENT(INOUT) or VOLATILE attribute of the dummy argument '%s'" -msgstr "" +msgstr "Daerah array aktual argumen dengan vektor subscript di %L adalah tidak kompatibel dengan INTENT(OUT), INTENT(INOUT) atau VOLATILE atribut dari argumen dummy'%s'" #: fortran/interface.c:2056 #, no-c-format msgid "Assumed-shape actual argument at %L is incompatible with the non-assumed-shape dummy argument '%s' due to VOLATILE attribute" -msgstr "" +msgstr "Bentuk-diasumsikan aktual argumen di %L adalah tidak kompatibel dengan bentuk tidak diasumsikan dummy argumen '%s' karena atribut VOLATILE" #: fortran/interface.c:2068 #, no-c-format msgid "Array-section actual argument at %L is incompatible with the non-assumed-shape dummy argument '%s' due to VOLATILE attribute" -msgstr "" +msgstr "Daerah array aktual argumen di %L adalah tidak kompatibel dengan tidak-diasumsikanbentuk dummy argumen '%s' karena atribut VOLATILE" #: fortran/interface.c:2087 #, no-c-format msgid "Pointer-array actual argument at %L requires an assumed-shape or pointer-array dummy argument '%s' due to VOLATILE attribute" -msgstr "" +msgstr "Penunjuk array aktual argumen di %L membutuhkan sebuah bentuk diasumsikan ataupenunjuk array dummy argumen '%s' karena atribut VOLATILE" #: fortran/interface.c:2117 #, no-c-format msgid "Missing actual argument for argument '%s' at %L" -msgstr "" +msgstr "Hilang aktual argumen untuk argumen '%s' di %L" #: fortran/interface.c:2303 #, no-c-format msgid "Same actual argument associated with INTENT(%s) argument '%s' and INTENT(%s) argument '%s' at %L" -msgstr "" +msgstr "Aktual argumen sama berasosiasi dengan INTENT(%s) argumen '%s' dan INTENT(%s) argumen '%s' di %L" #: fortran/interface.c:2359 #, no-c-format msgid "Procedure argument at %L is INTENT(IN) while interface specifies INTENT(%s)" -msgstr "" +msgstr "Prosedur argumen di %L adalah INTENT(IN) ketika antar-muka menspesifikasikan INTENT(%s)" #: fortran/interface.c:2369 #, no-c-format msgid "Procedure argument at %L is local to a PURE procedure and is passed to an INTENT(%s) argument" -msgstr "" +msgstr "Prosedur argumen di %L adalah lokal ke sebuah prosedur PURE dan adalah dilewatkan ke sebuah argumen INTENT(%s)" #: fortran/interface.c:2377 #, no-c-format msgid "Procedure argument at %L is local to a PURE procedure and has the POINTER attribute" -msgstr "" +msgstr "Prosedur argumen di %L adalah lokal ke sebuah prosedur PURE dan memiliki atribut PENUNJUK" #: fortran/interface.c:2400 #, no-c-format msgid "Procedure '%s' called with an implicit interface at %L" -msgstr "" +msgstr "Prosedur '%s' dipanggil dengan sebuah antar-muka implisit di %L" #: fortran/interface.c:2629 #, no-c-format msgid "Function '%s' called in lieu of an operator at %L must be PURE" -msgstr "" +msgstr "Fungsi '%s' dipanggil dalam tempat dari sebuah operator di %L harus berupa PURE" #: fortran/interface.c:2708 #, no-c-format msgid "Entity '%s' at %C is already present in the interface" -msgstr "" +msgstr "Entiti '%s' di %C telah ada dalam sebuah antar-muka" #: fortran/intrinsic.c:2923 #, no-c-format msgid "Too many arguments in call to '%s' at %L" -msgstr "" +msgstr "Terlalu banyak argumen dalam panggilan ke '%s' di %L" #: fortran/intrinsic.c:2938 #, no-c-format msgid "The argument list functions %%VAL, %%LOC or %%REF are not allowed in this context at %L" -msgstr "" +msgstr "Daftar argumen fungsi %%VAL, %%LOC atau %%REF tidak diperbolehkan dalam konteks ini di %L" #: fortran/intrinsic.c:2941 #, no-c-format msgid "Can't find keyword named '%s' in call to '%s' at %L" -msgstr "" +msgstr "Tidak dapat menemukan kata kunci bernama '%s' dalam panggilan ke '%s' di %L" #: fortran/intrinsic.c:2948 #, no-c-format msgid "Argument '%s' is appears twice in call to '%s' at %L" -msgstr "" +msgstr "Argumen '%s' muncul dua kali dalam panggilan ke '%s' di %L" #: fortran/intrinsic.c:2962 #, no-c-format msgid "Missing actual argument '%s' in call to '%s' at %L" -msgstr "" +msgstr "Hilang aktual argumen '%s' dalam panggilan ke '%s' di %L" #: fortran/intrinsic.c:2977 #, no-c-format msgid "ALTERNATE RETURN not permitted at %L" -msgstr "" +msgstr "ALTERNATIF KEMBALI tidak diijinkan di %L" #: fortran/intrinsic.c:3026 #, no-c-format msgid "Type of argument '%s' in call to '%s' at %L should be %s, not %s" -msgstr "" +msgstr "Tipe dari argumen '%s' dalam panggilan ke '%s' di %L seharusnya %s, bukan %s" #: fortran/intrinsic.c:3342 #, no-c-format msgid "Intrinsic '%s' at %L is not included in the selected standard" -msgstr "" +msgstr "Intrinsik '%s' di %L tidak termasuk dalam standar yang dipilih" #: fortran/intrinsic.c:3398 #, no-c-format msgid "Fortran 2003: Function '%s' as initialization expression at %L" -msgstr "" +msgstr "Fortran 2003: Fungsi '%s' sebagai ekspresi inisialisasi di %L" #: fortran/intrinsic.c:3463 #, no-c-format msgid "Fortran 2003: Elemental function as initialization expression with non-integer/non-character arguments at %L" -msgstr "" +msgstr "Fortran 2003: Fungsi elemental sebagai ekspresi inisialisasi dengan bukan integer/bukan-karakter argumen di %L" #: fortran/intrinsic.c:3524 #, no-c-format msgid "Subroutine call to intrinsic '%s' at %L is not PURE" -msgstr "" +msgstr "Panggilan subroutine ke intrinsik '%s' di %L tidak PURE" #: fortran/intrinsic.c:3595 #, no-c-format msgid "Extension: Conversion from %s to %s at %L" -msgstr "" +msgstr "Ekstensi: Konversi dari %s ke %s di %L" #: fortran/intrinsic.c:3598 #, no-c-format msgid "Conversion from %s to %s at %L" -msgstr "" +msgstr "Konversi dari %s ke %s di %L" #: fortran/intrinsic.c:3645 #, no-c-format msgid "Can't convert %s to %s at %L" -msgstr "" +msgstr "Tidak dapat mengubah %s ke %s di %L" #: fortran/io.c:156 fortran/primary.c:750 #, no-c-format msgid "Extension: backslash character at %C" -msgstr "" +msgstr "Ekstensi: karakter backslash di %C" #: fortran/io.c:187 fortran/io.c:190 #, no-c-format msgid "Extension: Tab character in format at %C" -msgstr "" +msgstr "Ekstensi: Karakter tab dalam format di %C" #: fortran/io.c:450 msgid "Positive width required" -msgstr "" +msgstr "Lebar positif dibutuhkan" #: fortran/io.c:451 msgid "Nonnegative width required" -msgstr "" +msgstr "lebar tidak negatif dibutuhkan" #: fortran/io.c:452 msgid "Unexpected element" -msgstr "" +msgstr "Elemen tidak diduga" #: fortran/io.c:453 msgid "Unexpected end of format string" -msgstr "" +msgstr "Akhir dari format string tidak terduga" #: fortran/io.c:472 msgid "Missing leading left parenthesis" -msgstr "" +msgstr "Hilang leading left parenthesis" #: fortran/io.c:519 msgid "Expected P edit descriptor" -msgstr "" +msgstr "Diduga P edit deskripsi" #. P requires a prior number. #: fortran/io.c:527 msgid "P descriptor requires leading scale factor" -msgstr "" +msgstr "P pendeskripsi membutuhkan awalah faktor pengali" #. X requires a prior number if we're being pedantic. #: fortran/io.c:532 #, no-c-format msgid "Extension: X descriptor requires leading space count at %C" -msgstr "" +msgstr "Ekstensi: X pendeskripsi membutuhkan awalan spasi dihitung di %C" #: fortran/io.c:554 #, no-c-format msgid "Extension: $ descriptor at %C" -msgstr "" +msgstr "Ekstensi: $ pendeskripsi di %C" #: fortran/io.c:559 #, no-c-format msgid "$ should be the last specifier in format at %C" -msgstr "" +msgstr "$ seharusnya penspesifikasi terakhir dalam format di %C" #: fortran/io.c:604 msgid "Repeat count cannot follow P descriptor" -msgstr "" +msgstr "Jumlah pengulangan tidak dapat mengikuti pendeskripsi P" #: fortran/io.c:624 #, no-c-format msgid "Extension: Missing positive width after L descriptor at %C" -msgstr "" +msgstr "Ekstensi: Hilang lebar positif setelah pendeskripsi L di %C" #: fortran/io.c:670 fortran/io.c:672 fortran/io.c:733 fortran/io.c:735 #, no-c-format msgid "Period required in format specifier at %C" -msgstr "" +msgstr "Period dibutuhkan dalam format penspesifikasi di %C" #: fortran/io.c:704 msgid "Positive exponent width required" -msgstr "" +msgstr "Lebar positif eksponen dibutuhkan" #: fortran/io.c:753 #, no-c-format msgid "The H format specifier at %C is a Fortran 95 deleted feature" -msgstr "" +msgstr "Penspesifikasi format H di %C adalah sebuah feature Fortran 95 yang dihapus" #: fortran/io.c:838 fortran/io.c:895 #, no-c-format msgid "Extension: Missing comma at %C" -msgstr "" +msgstr "Ekstensi: Hilang koma di %C" #: fortran/io.c:905 #, no-c-format msgid "%s in format string at %C" -msgstr "" +msgstr "%s dalam format string di %C" #: fortran/io.c:946 #, no-c-format msgid "Format statement in module main block at %C" -msgstr "" +msgstr "Pernyataan format dalam modul blok utama di %C" #: fortran/io.c:952 #, no-c-format msgid "Missing format label at %C" -msgstr "" +msgstr "Hilang label format di %C" #: fortran/io.c:1010 fortran/io.c:1034 #, no-c-format msgid "Duplicate %s specification at %C" -msgstr "" +msgstr "Duplikasi %s spesifikasi di %C" #: fortran/io.c:1041 #, no-c-format msgid "Variable tag cannot be INTENT(IN) at %C" -msgstr "" +msgstr "Variabel tag tidak dapat berupa INTENT(IN) di %C" #: fortran/io.c:1048 #, no-c-format msgid "Variable tag cannot be assigned in PURE procedure at %C" -msgstr "" +msgstr "Variabel tag tidak dapat ditempatkan dalam prosedur PURE di %C" #: fortran/io.c:1085 #, no-c-format msgid "Duplicate %s label specification at %C" -msgstr "" +msgstr "Duplikasi %s label spesifikasi di %C" #: fortran/io.c:1106 #, no-c-format msgid "Constant expression in FORMAT tag at %L must be of type default CHARACTER" -msgstr "" +msgstr "Ekspresi konstant dalam FORMAT tag di %L harus berupa tipe baku KARAKTER" #: fortran/io.c:1119 #, no-c-format msgid "FORMAT tag at %L must be of type CHARACTER or INTEGER" -msgstr "" +msgstr "FORMAT tag di %L harus berupa tipe KARAKTER atau INTEGER" #: fortran/io.c:1125 #, no-c-format msgid "Deleted feature: ASSIGNED variable in FORMAT tag at %L" -msgstr "" +msgstr "Featur terhapus: DITEMPATKAN variabel dalam FORMAT tag di %L" #: fortran/io.c:1131 #, no-c-format msgid "Variable '%s' at %L has not been assigned a format label" -msgstr "" +msgstr "Variabel '%s' di %L belum ditempatkan sebuah label format" #: fortran/io.c:1138 #, no-c-format msgid "Scalar '%s' in FORMAT tag at %L is not an ASSIGNED variable" -msgstr "" +msgstr "Skalar '%s' dalam FORMAT tag di %L bukan sebuah variabel DITEMPATKAN" #: fortran/io.c:1151 #, no-c-format msgid "Extension: Character array in FORMAT tag at %L" -msgstr "" +msgstr "Ekstensi: Karakter array dalam FORMAT tag di %L" #: fortran/io.c:1157 #, no-c-format msgid "Extension: Non-character in FORMAT tag at %L" -msgstr "" +msgstr "Ekstensi: Bukan-karakter dalam tag FORMAT di %L" #: fortran/io.c:1182 #, no-c-format msgid "%s tag at %L must be of type %s" -msgstr "" +msgstr "%s tag di %L harus berupa tipe %s" #: fortran/io.c:1189 #, no-c-format msgid "%s tag at %L must be scalar" -msgstr "" +msgstr "%s tag di %L harus berupa skalar" #: fortran/io.c:1195 #, no-c-format msgid "Fortran 2003: IOMSG tag at %L" -msgstr "" +msgstr "Fortran 2003: IOMSG tag di %L" #: fortran/io.c:1203 #, no-c-format msgid "Fortran 95 requires default INTEGER in %s tag at %L" -msgstr "" +msgstr "Fortran 95 membutuhkan INTEGER baku dalam tag %s di %L" #: fortran/io.c:1211 #, no-c-format msgid "Extension: CONVERT tag at %L" -msgstr "" +msgstr "Ekstensi: CONVERT tag di %L" #: fortran/io.c:1367 fortran/io.c:1375 #, no-c-format msgid "Fortran 2003: %s specifier in %s statement at %C has value '%s'" -msgstr "" +msgstr "Fortran 2003: penspesifikasi %s dalam pernyataan %s di %C memiliki nilai '%s'" #: fortran/io.c:1393 fortran/io.c:1401 #, no-c-format msgid "Extension: %s specifier in %s statement at %C has value '%s'" -msgstr "" +msgstr "Ekstensi: penspesifikasi %s dalam pernyataan %s di %C memiliki nilai '%s'" #: fortran/io.c:1413 fortran/io.c:1419 #, no-c-format msgid "%s specifier in %s statement at %C has invalid value '%s'" -msgstr "" +msgstr "penspesifikasi %s dalam pernyataan %s di %C memiliki nilai tidak valid '%s'" #: fortran/io.c:1473 #, no-c-format msgid "OPEN statement not allowed in PURE procedure at %C" -msgstr "" +msgstr "pernyataan OPEN tidak diperbolehkan dalam prosedur PURE di %C" #: fortran/io.c:1818 #, no-c-format msgid "CLOSE statement not allowed in PURE procedure at %C" -msgstr "" +msgstr "pernyataan CLOSE tidak diperbolehkan dalam prosedur PURE di %C" #: fortran/io.c:1955 fortran/match.c:1911 #, no-c-format msgid "%s statement not allowed in PURE procedure at %C" -msgstr "" +msgstr "pernyataan %s tidak diperbolehkan dalam prosedur PURE di %C" #: fortran/io.c:2011 #, no-c-format msgid "Fortran 2003: FLUSH statement at %C" -msgstr "" +msgstr "Fortran 2003: pernyataan FLUSH di %C" #: fortran/io.c:2072 #, no-c-format msgid "Duplicate UNIT specification at %C" -msgstr "" +msgstr "Duplikasi SATUAN spesifikasi di %C" #: fortran/io.c:2132 #, no-c-format msgid "Duplicate format specification at %C" -msgstr "" +msgstr "Duplikasi format spesifikasi di %C" #: fortran/io.c:2149 #, no-c-format msgid "Symbol '%s' in namelist '%s' is INTENT(IN) at %C" -msgstr "" +msgstr "Simbol '%s' dalam daftar nama '%s' adalah INTENT(IN) di %C" #: fortran/io.c:2185 #, no-c-format msgid "Duplicate NML specification at %C" -msgstr "" +msgstr "Duplikasi spesifikasi NML di %C" #: fortran/io.c:2194 #, no-c-format msgid "Symbol '%s' at %C must be a NAMELIST group name" -msgstr "" +msgstr "Simbol '%s' di %C harus berupa sebuah nama grup DAFTAR-NAMA" #: fortran/io.c:2235 #, no-c-format msgid "END tag at %C not allowed in output statement" -msgstr "" +msgstr "tag AKHIR di %C tidak diperbolehkan dalam pernyataan keluaran" #: fortran/io.c:2292 #, no-c-format msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable" -msgstr "" +msgstr "spesifikasi SATUAN di %L harus berupa sebuah ekspresi INTEGER atau sebuah KARAKTER variabel" #: fortran/io.c:2301 #, no-c-format msgid "Internal unit with vector subscript at %L" -msgstr "" +msgstr "Satuan internal dengan vektor subscrip di %L" #: fortran/io.c:2308 #, no-c-format msgid "External IO UNIT cannot be an array at %L" -msgstr "" +msgstr "Eksternal IO UNIT tidak dapat berupa sebuah array di %L" #: fortran/io.c:2318 #, no-c-format msgid "ERR tag label %d at %L not defined" -msgstr "" +msgstr "ERR tag label %d di %L tidak didefinisikan" #: fortran/io.c:2330 #, no-c-format msgid "END tag label %d at %L not defined" -msgstr "" +msgstr "END tag label %d di %L tidak didefinisikan" #: fortran/io.c:2342 #, no-c-format msgid "EOR tag label %d at %L not defined" -msgstr "" +msgstr "EOR tag label %d di %L tidak didefinisikan" #: fortran/io.c:2352 #, no-c-format msgid "FORMAT label %d at %L not defined" -msgstr "" +msgstr "FORMAT label %d di %L tidak didefinisikan" #: fortran/io.c:2473 #, no-c-format msgid "Syntax error in I/O iterator at %C" -msgstr "" +msgstr "Sintaks error dalam iterasi I/O di %C" #: fortran/io.c:2504 #, no-c-format msgid "Expected variable in READ statement at %C" -msgstr "" +msgstr "Diduga variabel dalam pernyataan BACA di %C" #: fortran/io.c:2510 #, no-c-format msgid "Expected expression in %s statement at %C" -msgstr "" +msgstr "Diduga ekspresi dalam pernyataan %s di %C" #: fortran/io.c:2520 #, no-c-format msgid "Variable '%s' in input list at %C cannot be INTENT(IN)" -msgstr "" +msgstr "Variabel '%s' dalam daftar masukan di %C tidak dapat INTENT(IN)" #: fortran/io.c:2529 #, no-c-format msgid "Cannot read to variable '%s' in PURE procedure at %C" -msgstr "" +msgstr "Tidak dapat membaca ke variabel '%s' dalam prosedur PURE di %C" #: fortran/io.c:2545 #, no-c-format msgid "Cannot write to internal file unit '%s' at %C inside a PURE procedure" -msgstr "" +msgstr "Tidak dapat menulis ke internal berkas satuan '%s' di %C didalam prosedur PURE" #. A general purpose syntax error. #: fortran/io.c:2606 fortran/io.c:3013 fortran/gfortran.h:2002 #, no-c-format msgid "Syntax error in %s statement at %C" -msgstr "" +msgstr "Sintaks error dalam pernyataan %s di %C" #: fortran/io.c:2679 #, no-c-format msgid "Fortran 2003: Internal file at %L with namelist" -msgstr "" +msgstr "Fortran 2003: Berkas internal di %L dengan daftar-nama" #: fortran/io.c:2842 #, no-c-format msgid "PRINT namelist at %C is an extension" -msgstr "" +msgstr "daftar-nama PRINT di %C adalah sebuah ekstensi" #: fortran/io.c:2974 #, no-c-format msgid "Extension: Comma before i/o item list at %C" -msgstr "" +msgstr "Ekstensi: Koma sebalum i/o daftar item di %C" #: fortran/io.c:2983 #, no-c-format msgid "Expected comma in I/O list at %C" -msgstr "" +msgstr "Diduga koma dalam daftar I/O di %C" #: fortran/io.c:3045 #, no-c-format msgid "PRINT statement at %C not allowed within PURE procedure" -msgstr "" +msgstr "pernyataan PRINT di %C tidak diperbolehkan dalam prosedur PURE" #: fortran/io.c:3185 fortran/io.c:3236 #, no-c-format msgid "INQUIRE statement not allowed in PURE procedure at %C" -msgstr "" +msgstr "pernyataan INQUIRE tidak diperbolehkan dalam prosedur di %C" #: fortran/io.c:3212 #, no-c-format msgid "IOLENGTH tag invalid in INQUIRE statement at %C" -msgstr "" +msgstr "IOLENTH tag tidak valid dalam pernyataan INQUIRE di %C" #: fortran/io.c:3222 fortran/trans-io.c:1145 #, no-c-format msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers" -msgstr "" +msgstr "pernyataan INQUIRE di %L tidak dapat berisi baik BERKAS dan penspesifikasi SATUAN" #: fortran/io.c:3229 #, no-c-format msgid "INQUIRE statement at %L requires either FILE or UNIT specifier" -msgstr "" +msgstr "pernyataan INQUIRE di %L membutuhkan baik BERKAS atau penspesifikasi SATUAN" #: fortran/match.c:156 #, no-c-format msgid "Missing ')' in statement before %L" -msgstr "" +msgstr "Hilang ')' dalam pernyataan sebelum %L" #: fortran/match.c:161 #, no-c-format msgid "Missing '(' in statement before %L" -msgstr "" +msgstr "Hilang '(' dalam pernyataan sebelum %L" #: fortran/match.c:332 #, no-c-format msgid "Integer too large at %C" -msgstr "" +msgstr "Integer terlalu besar di %C" #: fortran/match.c:425 fortran/parse.c:589 #, no-c-format msgid "Too many digits in statement label at %C" -msgstr "" +msgstr "Terlalu banyak digit dalam pernyataan label di %C" #: fortran/match.c:431 #, no-c-format msgid "Statement label at %C is zero" -msgstr "" +msgstr "Pernyataan label di %C adalah nol" #: fortran/match.c:464 #, no-c-format msgid "Label name '%s' at %C is ambiguous" -msgstr "" +msgstr "Nama label '%s' di %C adalah ambigu" #: fortran/match.c:470 #, no-c-format msgid "Duplicate construct label '%s' at %C" -msgstr "" +msgstr "Duplikasi konstruksi label '%s' di %C" #: fortran/match.c:500 #, no-c-format msgid "Invalid character in name at %C" -msgstr "" +msgstr "Karakter tidak valid dalam nama di %C" #: fortran/match.c:513 fortran/match.c:585 #, no-c-format msgid "Name at %C is too long" -msgstr "" +msgstr "Nama di %C adalah terlalu panjang" #: fortran/match.c:568 fortran/match.c:614 #, no-c-format msgid "Invalid C name in NAME= specifier at %C" -msgstr "" +msgstr "Nama C tidak valid dalam penspesifikasi NAMA= di %C" #: fortran/match.c:605 #, no-c-format msgid "Embedded space in NAME= specifier at %C" -msgstr "" +msgstr "Ruang terembed dalam penspesifikasi NAMA= di %C" #: fortran/match.c:930 #, no-c-format msgid "Loop variable at %C cannot be a sub-component" -msgstr "" +msgstr "Variabel loop di %C tidak dapat berupa sebuah sub-komponen" #: fortran/match.c:936 #, no-c-format msgid "Loop variable '%s' at %C cannot be INTENT(IN)" -msgstr "" +msgstr "Loop variabel '%s' di %C tidak dapat berupa INTENT(IN)" #: fortran/match.c:969 #, no-c-format msgid "Expected a step value in iterator at %C" -msgstr "" +msgstr "Diduga sebuah nilai step dalam iterator di %C" #: fortran/match.c:981 #, no-c-format msgid "Syntax error in iterator at %C" -msgstr "" +msgstr "Sintaks error dalam iterator di %C" #: fortran/match.c:1217 #, no-c-format msgid "Invalid form of PROGRAM statement at %C" -msgstr "" +msgstr "Form tidak valid dari pernyataan APLIKASI di %C" #: fortran/match.c:1258 #, no-c-format msgid "Setting value of PROTECTED variable at %C" -msgstr "" +msgstr "Nilai konfigurasi dari variabel TERPROTEKSI di %C" #: fortran/match.c:1311 #, no-c-format msgid "Assigning to a PROTECTED pointer at %C" -msgstr "" +msgstr "Diassign ke sebuah penunjuk TERPROTEKSI di %C" #: fortran/match.c:1354 fortran/match.c:1435 #, no-c-format msgid "Obsolescent: arithmetic IF statement at %C" -msgstr "" +msgstr "Obsolescent: aritmetik pernyataan IF di %C" #: fortran/match.c:1410 #, no-c-format msgid "Syntax error in IF-expression at %C" -msgstr "" +msgstr "Sintaks error dalam pernyataan IF di %C" #: fortran/match.c:1421 #, no-c-format msgid "Block label not appropriate for arithmetic IF statement at %C" -msgstr "" +msgstr "Label blok tidak sesuai untuk pernyataan aritmetik IF di %C" #: fortran/match.c:1459 #, no-c-format msgid "Block label is not appropriate for IF statement at %C" -msgstr "" +msgstr "Label blok tidak sesuai untuk pernyataan IF di %C" #: fortran/match.c:1538 fortran/primary.c:2559 #, no-c-format msgid "Cannot assign to a named constant at %C" -msgstr "" +msgstr "Tidak dapat assign ke sebuah konstanta bernama di %C" #: fortran/match.c:1548 #, no-c-format msgid "Unclassifiable statement in IF-clause at %C" -msgstr "" +msgstr "Pernyataan tidak terklasifikasi dalam clause IF di %C" #: fortran/match.c:1555 #, no-c-format msgid "Syntax error in IF-clause at %C" -msgstr "" +msgstr "Sintaks error dalam IF-clause di %C" #: fortran/match.c:1599 #, no-c-format msgid "Unexpected junk after ELSE statement at %C" -msgstr "" +msgstr "Tidak terduga sampah setelah pernyataan ELSE di %C" #: fortran/match.c:1605 fortran/match.c:1640 #, no-c-format msgid "Label '%s' at %C doesn't match IF label '%s'" -msgstr "" +msgstr "Label '%s' di %C tidak cocok dengan label IF '%s'" #: fortran/match.c:1634 #, no-c-format msgid "Unexpected junk after ELSE IF statement at %C" -msgstr "" +msgstr "Tidak terduga sampah setelah pernyataan ELSE IF di %C" #: fortran/match.c:1797 #, no-c-format msgid "Name '%s' in %s statement at %C is not a loop name" -msgstr "" +msgstr "Nama '%s' dalam pernyataan %s di %C bukan sebuah nama loop" #: fortran/match.c:1813 #, no-c-format msgid "%s statement at %C is not within a loop" -msgstr "" +msgstr "pernyataan %s di %C tidak dalam jangkauan sebuah loop" #: fortran/match.c:1816 #, no-c-format msgid "%s statement at %C is not within loop '%s'" -msgstr "" +msgstr "pernyataan %s di %C tidak dlam jangkauan loop '%s'" #: fortran/match.c:1824 #, no-c-format msgid "%s statement at %C leaving OpenMP structured block" -msgstr "" +msgstr "pernyataan %s di %C meninggalkan OpenMP blok terstruktur" #: fortran/match.c:1837 #, no-c-format msgid "EXIT statement at %C terminating !$OMP DO loop" -msgstr "" +msgstr "pernyataan EXIT di %C mengakhiri loop !$OMP DO" #: fortran/match.c:1889 #, no-c-format msgid "Too many digits in STOP code at %C" -msgstr "" +msgstr "Terlalu banyak digits dalam kode STOP di %C" #: fortran/match.c:1942 #, no-c-format msgid "Deleted feature: PAUSE statement at %C" -msgstr "" +msgstr "Featur terhapus: pernyataan PAUSE di %C" #: fortran/match.c:1990 #, no-c-format msgid "Deleted feature: ASSIGN statement at %C" -msgstr "" +msgstr "Featur terhapus: pernyataan ASSIGN di %C" #: fortran/match.c:2036 #, no-c-format msgid "Deleted feature: Assigned GOTO statement at %C" -msgstr "" +msgstr "Featur terhapus: Terassign pernyataan GOTO di %C" #: fortran/match.c:2083 fortran/match.c:2135 #, no-c-format msgid "Statement label list in GOTO at %C cannot be empty" -msgstr "" +msgstr "Daftar pernyataan label dalam GOTO di %C tidak dapat kosong" #: fortran/match.c:2219 #, no-c-format msgid "Bad allocate-object in ALLOCATE statement at %C for a PURE procedure" -msgstr "" +msgstr "Alokasi-objek buruk dalam pernyataan ALOKASI di %C untuk sebuah prosedur PURE" #: fortran/match.c:2287 #, no-c-format msgid "Illegal variable in NULLIFY at %C for a PURE procedure" -msgstr "" +msgstr "variabel tidak legal dalam NULLIFY di %C untuk sebuah prosedur PURE" #: fortran/match.c:2364 #, no-c-format msgid "Illegal deallocate-expression in DEALLOCATE at %C for a PURE procedure" -msgstr "" +msgstr "ekspresi deallokasi tidak legal dalam DEALLOCATE di %C untuk sebuah prosedur PURE" #: fortran/match.c:2417 #, no-c-format msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE" -msgstr "" +msgstr "Pernyataan alternatif RETURN di %C hanya diperbolehkan dalam sebuah SUBROUTINE" #: fortran/match.c:2448 #, no-c-format msgid "Extension: RETURN statement in main program at %C" -msgstr "" +msgstr "Ekstensi: pernyataan RETURN dalam aplikasi utama di %C" #: fortran/match.c:2658 #, no-c-format msgid "Syntax error in common block name at %C" -msgstr "" +msgstr "Sintaks error dalam nama blok umum di %C" #: fortran/match.c:2694 #, no-c-format msgid "Symbol '%s' at %C is already an external symbol that is not COMMON" -msgstr "" +msgstr "Simbol '%s' di %C telah menjadi sebuah simbol eksternal yang tidak umum" #. If we find an error, just print it and continue, #. cause it's just semantic, and we can see if there @@ -7463,1012 +7468,1012 @@ msgstr "" #: fortran/match.c:2753 #, no-c-format msgid "Variable '%s' at %L in common block '%s' at %C must be declared with a C interoperable kind since common block '%s' is bind(c)" -msgstr "" +msgstr "Variabel '%s' di %L dalam blok umum '%s' di %C harus terdeklarasi dengan sebuah C interoperable kind karena blok umum '%s' adalah bind(c)" #: fortran/match.c:2762 #, no-c-format msgid "Variable '%s' in common block '%s' at %C can not be bind(c) since it is not global" -msgstr "" +msgstr "Variabel '%s' dalam blok umum '%s' di %C tidak dapat bind(c) karena ini bukan global" #: fortran/match.c:2769 #, no-c-format msgid "Symbol '%s' at %C is already in a COMMON block" -msgstr "" +msgstr "Simbol '%s' di %C telah dalam sebuah blok COMMON" #: fortran/match.c:2777 #, no-c-format msgid "Initialized symbol '%s' at %C can only be COMMON in BLOCK DATA" -msgstr "" +msgstr "Simbol terinisialisasi '%s' di %C hanya dapat berupa COMMON dalam BLOK DATA" #: fortran/match.c:2804 #, no-c-format msgid "Array specification for symbol '%s' in COMMON at %C must be explicit" -msgstr "" +msgstr "Spesifikasi array untuk simbol '%s' dalam COMMON di %C harus eksplisit" #: fortran/match.c:2814 #, no-c-format msgid "Symbol '%s' in COMMON at %C cannot be a POINTER array" -msgstr "" +msgstr "Simbol '%s' dalam COMMON di %C tidak dapat berupa sebuah array PENUNJUK" #: fortran/match.c:2846 #, no-c-format msgid "Symbol '%s', in COMMON block '%s' at %C is being indirectly equivalenced to another COMMON block '%s'" -msgstr "" +msgstr "Simbol '%s', dalam blok COMMON '%s' di %C sedang secara tidak langsung sama dengan ke COMMON blok '%s' lain" #: fortran/match.c:2954 #, no-c-format msgid "Namelist group name '%s' at %C already has a basic type of %s" -msgstr "" +msgstr "Daftar-nama nama grup '%s' di %C telah memiliki sebuah tipe dasar dari %s" #: fortran/match.c:2962 #, no-c-format msgid "Namelist group name '%s' at %C already is USE associated and cannot be respecified." -msgstr "" +msgstr "Daftar-nama nama grup '%s' di %C telah USE diasosiasikan dan tidak dapat berupa respecified." #: fortran/match.c:2989 #, no-c-format msgid "Assumed size array '%s' in namelist '%s' at %C is not allowed" -msgstr "" +msgstr "Ukuran array yang diasumsikan '%s' dalam daftar nama '%s' di %C tidak diperbolehkan" #: fortran/match.c:2996 #, no-c-format msgid "Assumed character length '%s' in namelist '%s' at %C is not allowed" -msgstr "" +msgstr "Panjang karakter yang diasumsikan '%s' dalam daftar nama '%s' di %C tidak diperbolehkan" #: fortran/match.c:3123 #, no-c-format msgid "Derived type component %C is not a permitted EQUIVALENCE member" -msgstr "" +msgstr "Tipe komponen turunan %C bukan sebuah anggota EQUIVALENCE yang diijinkan" #: fortran/match.c:3131 #, no-c-format msgid "Array reference in EQUIVALENCE at %C cannot be an array section" -msgstr "" +msgstr "Referensi array dalam EQUIVALENCE di %C tidak dapat berupa daerah array" #: fortran/match.c:3159 #, no-c-format msgid "EQUIVALENCE at %C requires two or more objects" -msgstr "" +msgstr "EQUIVALENCE di %C membutuhkan dua atau lebih objek" #: fortran/match.c:3173 #, no-c-format msgid "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C" -msgstr "" +msgstr "Mencoba secara tidak langsung overlap blok COMMON %s dan %s dengan EQUIVALENCE di %C" #: fortran/match.c:3299 #, no-c-format msgid "Statement function at %L is recursive" -msgstr "" +msgstr "Pernyataan fungsi di %L adalah rekursif" #: fortran/match.c:3387 #, no-c-format msgid "Expected initialization expression in CASE at %C" -msgstr "" +msgstr "Diduga ekspresi inisialisasi dalam CASE di %C" #: fortran/match.c:3410 #, no-c-format msgid "Expected the name of the SELECT CASE construct at %C" -msgstr "" +msgstr "Diduga nama dari SELECT CASE konstruk di %C" #: fortran/match.c:3422 #, no-c-format msgid "Expected case name of '%s' at %C" -msgstr "" +msgstr "Diduga nama case dari '%s' di %C" #: fortran/match.c:3466 #, no-c-format msgid "Unexpected CASE statement at %C" -msgstr "" +msgstr "Diduga pernyataan CASE di %C" #: fortran/match.c:3518 #, no-c-format msgid "Syntax error in CASE-specification at %C" -msgstr "" +msgstr "Sintaks error dalam spesifikasi CASE di %C" #: fortran/match.c:3638 #, no-c-format msgid "ELSEWHERE statement at %C not enclosed in WHERE block" -msgstr "" +msgstr "pernyataan ELSEWHERE di %C tidak terenklose dalam blok WHERE" #: fortran/match.c:3676 #, no-c-format msgid "Label '%s' at %C doesn't match WHERE label '%s'" -msgstr "" +msgstr "Label '%s'di %C tidak cocok dengan label WHERE '%s'" #: fortran/match.c:3776 #, no-c-format msgid "Syntax error in FORALL iterator at %C" -msgstr "" +msgstr "Sintaks error dalam iterasi FORALL di %C" #: fortran/matchexp.c:28 #, c-format msgid "Syntax error in expression at %C" -msgstr "" +msgstr "Sintaks error dalam ekspresi di %C" #: fortran/matchexp.c:72 #, no-c-format msgid "Bad character '%c' in OPERATOR name at %C" -msgstr "" +msgstr "Karakter buruk '%c' dalam nama OPERATOR di %C" #: fortran/matchexp.c:80 #, no-c-format msgid "The name '%s' cannot be used as a defined operator at %C" -msgstr "" +msgstr "Nama '%s' tidak dapat digunakan sebagai sebuah operator terdefinisi di %C" #: fortran/matchexp.c:187 #, no-c-format msgid "Expected a right parenthesis in expression at %C" -msgstr "" +msgstr "Diduga sebuah parenthesis kanan dalam ekspresi di %C" #: fortran/matchexp.c:312 #, no-c-format msgid "Expected exponent in expression at %C" -msgstr "" +msgstr "Diduga eksponen dalam ekspresi di %C" #: fortran/matchexp.c:350 fortran/matchexp.c:355 fortran/matchexp.c:459 #: fortran/matchexp.c:464 #, no-c-format msgid "Extension: Unary operator following arithmetic operator (use parentheses) at %C" -msgstr "" +msgstr "Ekstensi: Operator unary mengikuti operator aritmetik (menggunakan parentheses) di %C" #: fortran/misc.c:39 #, no-c-format msgid "Out of memory-- malloc() failed" -msgstr "" +msgstr "Kehabisan memori-- malloc() gagal" #: fortran/module.c:516 #, no-c-format msgid "Fortran 2003: module nature in USE statement at %C" -msgstr "" +msgstr "Fortran 2003: modul alam dalam pernyataan USE di %C" #: fortran/module.c:528 #, no-c-format msgid "Module nature in USE statement at %C shall be either INTRINSIC or NON_INTRINSIC" -msgstr "" +msgstr "Modul alam dalam pernyataan USE di %C seharusnya baik INTRINSIK atau NON_INTRINSIC" #: fortran/module.c:541 #, no-c-format msgid "\"::\" was expected after module nature at %C but was not found" -msgstr "" +msgstr "\"::\" telah diduga setelah modul alam di %C tetapi tidak ditemukan" #: fortran/module.c:550 #, no-c-format msgid "Fortran 2003: \"USE :: module\" at %C" -msgstr "" +msgstr "Fortran 2003: \"USE :: module\" di %C" #: fortran/module.c:602 #, no-c-format msgid "Missing generic specification in USE statement at %C" -msgstr "" +msgstr "Hilang spesifikasi umum dalam pernyataan USE di %C" #: fortran/module.c:610 #, no-c-format msgid "Fortran 2003: Renaming operators in USE statements at %C" -msgstr "" +msgstr "Fortran 2003: Mengubah nama operator dalam pernyataan USE di %C" #: fortran/module.c:652 #, no-c-format msgid "The name '%s' at %C has already been used as an external module name." -msgstr "" +msgstr "Nama '%s' di %C telah digunakan sebagai nama modul eksternal" #: fortran/module.c:930 #, no-c-format msgid "Reading module %s at line %d column %d: %s" -msgstr "" +msgstr "Membaca modul %s di baris %d kolom %d: %s" #: fortran/module.c:934 #, no-c-format msgid "Writing module %s at line %d column %d: %s" -msgstr "" +msgstr "Menulis modul %s di baris %d kolom %d: %s" #: fortran/module.c:938 #, no-c-format msgid "Module %s at line %d column %d: %s" -msgstr "" +msgstr "Modul %s di baris %d kolom %d: %s" #: fortran/module.c:978 msgid "Unexpected EOF" -msgstr "" +msgstr "Tidak terduga EOF" #: fortran/module.c:1010 msgid "Unexpected end of module in string constant" -msgstr "" +msgstr "Tidak terduga akhir dari modul dalam konstanta string" #: fortran/module.c:1064 msgid "Integer overflow" -msgstr "" +msgstr "Integer overflow" #: fortran/module.c:1095 msgid "Name too long" -msgstr "" +msgstr "Nama terlalu panjang" #: fortran/module.c:1202 msgid "Bad name" -msgstr "" +msgstr "Nama buruk" #: fortran/module.c:1246 msgid "Expected name" -msgstr "" +msgstr "Diduga nama" #: fortran/module.c:1249 msgid "Expected left parenthesis" -msgstr "" +msgstr "Diduga parenthesis kiri" #: fortran/module.c:1252 msgid "Expected right parenthesis" -msgstr "" +msgstr "Diduga parenthesis kanan" #: fortran/module.c:1255 msgid "Expected integer" -msgstr "" +msgstr "Diduga integer" #: fortran/module.c:1258 msgid "Expected string" -msgstr "" +msgstr "Diduga string" #: fortran/module.c:1282 msgid "find_enum(): Enum not found" -msgstr "" +msgstr "find_enum(): Enum tidak ditemukan" #: fortran/module.c:1296 #, no-c-format msgid "Error writing modules file: %s" -msgstr "" +msgstr "Error menulis berkas modul: %s" #: fortran/module.c:1691 msgid "Expected attribute bit name" -msgstr "" +msgstr "Diduga nama atribut bit" #: fortran/module.c:2503 msgid "Expected integer string" -msgstr "" +msgstr "Diduga integer string" #: fortran/module.c:2507 msgid "Error converting integer" -msgstr "" +msgstr "Error mengubah integer" #: fortran/module.c:2529 msgid "Expected real string" -msgstr "" +msgstr "Diduga real string" #: fortran/module.c:2730 msgid "Expected expression type" -msgstr "" +msgstr "Diduga tipe ekspresi" #: fortran/module.c:2784 msgid "Bad operator" -msgstr "" +msgstr "Operator buruk" #: fortran/module.c:2869 msgid "Bad type in constant expression" -msgstr "" +msgstr "Tipe buruk dalam ekspresi konstanta" #: fortran/module.c:2906 #, no-c-format msgid "Namelist %s cannot be renamed by USE association to %s" -msgstr "" +msgstr "Daftar-nama %s tidak dapat diubah namanya dengan assosiasi USE ke %s" #: fortran/module.c:3847 #, no-c-format msgid "Symbol '%s' referenced at %L not found in module '%s'" -msgstr "" +msgstr "Simbol '%s' direferensikan di %L tidak ditemukan dalam modul '%s'" #: fortran/module.c:3854 #, no-c-format msgid "User operator '%s' referenced at %L not found in module '%s'" -msgstr "" +msgstr "Operator pengguna '%s' direferensikan di %L tidak ditemukan dalam modul '%s'" #: fortran/module.c:3859 #, no-c-format msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'" -msgstr "" +msgstr "Operator intrinsik '%s' direferensikan di %L tidak ditemukan dalam modul '%s'" #: fortran/module.c:4400 #, no-c-format msgid "Can't open module file '%s' for writing at %C: %s" -msgstr "" +msgstr "Tidak dapat membuka berkas modul '%s' untuk menulis di %C: %s" #: fortran/module.c:4438 #, no-c-format msgid "Error writing module file '%s' for writing: %s" -msgstr "" +msgstr "Error menulis berkas modul '%s' untuk menulis: %s" #: fortran/module.c:4468 fortran/module.c:4550 #, no-c-format msgid "Symbol '%s' referenced at %L does not exist in intrinsic module ISO_C_BINDING." -msgstr "" +msgstr "Simbol '%s' direferensikan di %L tidak ada dalam modul intrinsik ISO_C_BINDING." #: fortran/module.c:4581 #, no-c-format msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING" -msgstr "" +msgstr "Simbol '%s' direferensikan di %L tidak ditemukan dalam modul intrinsik ISO_C_BINDING" #: fortran/module.c:4603 #, no-c-format msgid "Symbol '%s' already declared" -msgstr "" +msgstr "Simbol '%s' telah terdeklarasi" #: fortran/module.c:4658 #, no-c-format msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously" -msgstr "" +msgstr "Penggunaan daro modul intrinsik '%s' di %C konflik dengan tidak-intrinsik nama modul digunakan sebelumnya" #: fortran/module.c:4671 #, no-c-format msgid "Symbol '%s' referenced at %L does not exist in intrinsic module ISO_FORTRAN_ENV" -msgstr "" +msgstr "Simbol '%s' direferensikan di %L tidak ada dalam modul intrinsik ISO_FORTRAN_ENV" #: fortran/module.c:4679 #, no-c-format msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %L is incompatible with option %s" -msgstr "" +msgstr "Penggunaan dari NUMERIC_STORAGE_SIZE konstanta bernama dari modul intrinsik ISO_FORTRAN_ENV di %L adalah tidak kompatibel dengan opsi %s" #: fortran/module.c:4707 #, no-c-format msgid "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module ISO_FORTRAN_ENV at %C is incompatible with option %s" -msgstr "" +msgstr "Penggunaan dari NUMERIC_STORAGE_SIZE konstanta bernama dari modul intrinsik ISO_FORTRAN_ENV di %C adalah tidak kompatibel dengan opsi %s" #: fortran/module.c:4723 #, no-c-format msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV" -msgstr "" +msgstr "Simbol '%s' direferensikan di %L tidak ditemukan dalam modul intrinsik ISO_FORTRAN_ENV" #: fortran/module.c:4756 #, no-c-format msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C" -msgstr "" +msgstr "Fortran 2003: ISO_FORTRAN_ENV modul intrinsik di %C" #: fortran/module.c:4764 #, no-c-format msgid "Fortran 2003: ISO_C_BINDING module at %C" -msgstr "" +msgstr "Fortran 2003: ISO_C_BINDING modul di %C" #: fortran/module.c:4774 #, no-c-format msgid "Can't find an intrinsic module named '%s' at %C" -msgstr "" +msgstr "Tidak dapat menemukan modul intrinsik bernama '%s' di %C" #: fortran/module.c:4779 #, no-c-format msgid "Can't open module file '%s' for reading at %C: %s" -msgstr "" +msgstr "Tidak dapat membuka berkas modul '%s' untuk pembacaan di %C: %s" #: fortran/module.c:4787 #, no-c-format msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously" -msgstr "" +msgstr "Penggunaan dari modul tidak intrinsik '%s' di %C konflik dengan nama modul intrinsik yang digunakan sebelumnya" #: fortran/module.c:4802 msgid "Unexpected end of module" -msgstr "" +msgstr "Tidak terduga akhir dari modul" #: fortran/module.c:4807 #, no-c-format msgid "File '%s' opened at %C is not a GFORTRAN module file" -msgstr "" +msgstr "Berkas '%s' dibuka di %C bukan sebuah berkas modul GFORTRAN" #: fortran/module.c:4817 #, no-c-format msgid "Can't USE the same module we're building!" -msgstr "" +msgstr "Tidak dapat MENGGUNAKAN module yang sama yang sedang kita buat!" #: fortran/openmp.c:134 fortran/openmp.c:499 #, no-c-format msgid "COMMON block /%s/ not found at %C" -msgstr "" +msgstr "blok COMMON /%s/ tidak ditemukan di %C" #: fortran/openmp.c:165 #, no-c-format msgid "Syntax error in OpenMP variable list at %C" -msgstr "" +msgstr "Sintaks error dalam daftar variabel OpenMP di %C" #: fortran/openmp.c:291 #, no-c-format msgid "%s is not INTRINSIC procedure name at %C" -msgstr "" +msgstr "%s bukan sebuah nama prosedur INTRINSIK di %C" #: fortran/openmp.c:478 #, no-c-format msgid "Threadprivate variable at %C is an element of a COMMON block" -msgstr "" +msgstr "Variabel threadprivate di %C bukan sebuah elemen dari sebuah blok COMMON" #: fortran/openmp.c:518 #, no-c-format msgid "Syntax error in !$OMP THREADPRIVATE list at %C" -msgstr "" +msgstr "Sintaks error dalam daftar THREADPRIVATE !$OMP di %C" #: fortran/openmp.c:696 fortran/resolve.c:5970 fortran/resolve.c:6317 #, no-c-format msgid "IF clause at %L requires a scalar LOGICAL expression" -msgstr "" +msgstr "IF clause di %L membutuhkan sebuah ekspresi skalara LOGIKAL" #: fortran/openmp.c:704 #, no-c-format msgid "NUM_THREADS clause at %L requires a scalar INTEGER expression" -msgstr "" +msgstr "NUM_THREADS clause di %L membutuhkan sebuah ekspresi skalar INTEGER" #: fortran/openmp.c:712 #, no-c-format msgid "SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expression" -msgstr "" +msgstr "SCHEDULE clause chunk_size di %L membutuhkan sebuah ekspresi skalar INTEGER" #: fortran/openmp.c:726 fortran/openmp.c:736 fortran/openmp.c:743 #: fortran/openmp.c:753 #, no-c-format msgid "Symbol '%s' present on multiple clauses at %L" -msgstr "" +msgstr "Simbol '%s' ada dalam multiple clause di %L" #: fortran/openmp.c:776 #, no-c-format msgid "Non-THREADPRIVATE object '%s' in COPYIN clause at %L" -msgstr "" +msgstr "Bukan-THREADPRIVATE objek '%s' dalam clause COPYIN di %L" #: fortran/openmp.c:779 #, no-c-format msgid "COPYIN clause object '%s' is ALLOCATABLE at %L" -msgstr "" +msgstr "COPYIN clause objek '%s' adalah DAPAT DIALOKASIKAN di %L" #: fortran/openmp.c:782 #, no-c-format msgid "COPYIN clause object '%s' at %L has ALLOCATABLE components" -msgstr "" +msgstr "COPYIN clause objek '%s' di %L memiliki komponen DAPAT DIALOKASIKAN" #: fortran/openmp.c:790 #, no-c-format msgid "Assumed size array '%s' in COPYPRIVATE clause at %L" -msgstr "" +msgstr "Ukuran array diasumsikan '%s' dalam clause COPYPRIVATE di %L" #: fortran/openmp.c:793 #, no-c-format msgid "COPYPRIVATE clause object '%s' is ALLOCATABLE at %L" -msgstr "" +msgstr "COPYPRIVATE clause objek '%s' adalah DAPAT DIALOKASIKAN di %L" #: fortran/openmp.c:796 #, no-c-format msgid "COPYPRIVATE clause object '%s' at %L has ALLOCATABLE components" -msgstr "" +msgstr "COPYPRIVATE clause objek '%s' di %L memiliki komponen DAPAT DIALOKASIKAN" #: fortran/openmp.c:804 #, no-c-format msgid "THREADPRIVATE object '%s' in SHARED clause at %L" -msgstr "" +msgstr "objek THREADPRIVATE '%s' dalam clause SHARED di %L" #: fortran/openmp.c:807 #, no-c-format msgid "Cray pointee '%s' in SHARED clause at %L" -msgstr "" +msgstr "Cray pointee '%s' dalam SHARED clause di %L" #: fortran/openmp.c:815 #, no-c-format msgid "THREADPRIVATE object '%s' in %s clause at %L" -msgstr "" +msgstr "THREADPRIVATE objek '%s' dalam clause %s di %L" #: fortran/openmp.c:818 #, no-c-format msgid "Cray pointee '%s' in %s clause at %L" -msgstr "" +msgstr "Cray pointee '%s' dalam %s clause di %L" #: fortran/openmp.c:823 #, no-c-format msgid "POINTER object '%s' in %s clause at %L" -msgstr "" +msgstr "objek PENUNJUK '%s' dalam %s clause di %L" #: fortran/openmp.c:826 #, no-c-format msgid "%s clause object '%s' is ALLOCATABLE at %L" -msgstr "" +msgstr "%s objek clause '%s' adalah DAPAT DIALOKASIKAN di %L" #: fortran/openmp.c:831 #, no-c-format msgid "%s clause object '%s' has ALLOCATABLE components at %L" -msgstr "" +msgstr "%s clause objek '%s' memiliki komponen DAPAT DIALOKASIKAN di %L" #: fortran/openmp.c:834 #, no-c-format msgid "Cray pointer '%s' in %s clause at %L" -msgstr "" +msgstr "Cray penunjuk '%s' dalam clause %s di %L" #: fortran/openmp.c:838 #, no-c-format msgid "Assumed size array '%s' in %s clause at %L" -msgstr "" +msgstr "Ukuran array yang diasumsikan '%s' dalam %s clause di %L" #: fortran/openmp.c:843 #, no-c-format msgid "Variable '%s' in %s clause is used in NAMELIST statement at %L" -msgstr "" +msgstr "Variabel '%s' dalam clause %s digunakan dalam pernyataan NAMELIST di %L" #: fortran/openmp.c:852 #, no-c-format msgid "%c REDUCTION variable '%s' at %L must be of numeric type, got %s" -msgstr "" +msgstr "%c REDUKSI variabel '%s' di %L harus berupa tipe numerik, diperoleh %s" #: fortran/openmp.c:863 #, no-c-format msgid "%s REDUCTION variable '%s' must be LOGICAL at %L" -msgstr "" +msgstr "%s REDUKSI variabel '%s' harus berupa LOGIKAL di %L" #: fortran/openmp.c:874 #, no-c-format msgid "%s REDUCTION variable '%s' must be INTEGER or REAL at %L" -msgstr "" +msgstr "%s REDUKSI variabel '%s' harus berupa INTEGER atau RIL di %L" #: fortran/openmp.c:883 #, no-c-format msgid "%s REDUCTION variable '%s' must be INTEGER at %L" -msgstr "" +msgstr "%s REDUKSI variabel '%s' harus berupa INTEGER di %L" #: fortran/openmp.c:995 #, no-c-format msgid "!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L" -msgstr "" +msgstr "!$OMP ATOMIC pernyataan harus diset ke sebuah variabel skalar dari tipe intrinsik di %L" #: fortran/openmp.c:1035 #, no-c-format msgid "!$OMP ATOMIC assignment operator must be +, *, -, /, .AND., .OR., .EQV. or .NEQV. at %L" -msgstr "" +msgstr "!$OMP ATOMIC assignmen operator harus berupa +, *, -, /, .AND., .OR., .EQV. atau .NEQV. di %L" #: fortran/openmp.c:1083 #, no-c-format msgid "!$OMP ATOMIC assignment must be var = var op expr or var = expr op var at %L" -msgstr "" +msgstr "!$OMP ATOMIC assignmen harus berupa var = var op expr atau var = expr op var di %L" #: fortran/openmp.c:1097 #, no-c-format msgid "!$OMP ATOMIC var = var op expr not mathematically equivalent to var = var op (expr) at %L" -msgstr "" +msgstr "!$OMP ATOMIC var = var op expr tidak seacra matematik sama ekuivalen ke var = var op (expr) di %L" #: fortran/openmp.c:1129 #, no-c-format msgid "expr in !$OMP ATOMIC assignment var = var op expr must be scalar and cannot reference var at %L" -msgstr "" +msgstr "expr dalam !$OMP ATOMIC assignment var = var op expr harus berupa skalar dan tidak dapat bereferensi var di %L" #: fortran/openmp.c:1153 #, no-c-format msgid "!$OMP ATOMIC assignment intrinsic IAND, IOR or IEOR must have two arguments at %L" -msgstr "" +msgstr "!$OMP ATOMIC assignmen intrinsik IAND, IOR, atau IEOR harus memiliki dua argumen di %L" #: fortran/openmp.c:1160 #, no-c-format msgid "!$OMP ATOMIC assignment intrinsic must be MIN, MAX, IAND, IOR or IEOR at %L" -msgstr "" +msgstr "!$OMP ATOMIC assignmen intrinsik harus berupa MIN, MAX, IAND, IOR atau IEOR di %L" #: fortran/openmp.c:1176 #, no-c-format msgid "!$OMP ATOMIC intrinsic arguments except one must not reference '%s' at %L" -msgstr "" +msgstr "!$OMP ATOMIC intrinsik argumen kecuali satu tidak boleh mereferensi '%s' di %L" #: fortran/openmp.c:1179 #, no-c-format msgid "!$OMP ATOMIC intrinsic arguments must be scalar at %L" -msgstr "" +msgstr "!$OMP ATOMIC intrinsik argumen harus berupa skalar di %L" #: fortran/openmp.c:1185 #, no-c-format msgid "First or last !$OMP ATOMIC intrinsic argument must be '%s' at %L" -msgstr "" +msgstr "Pertama atau terakhir !$OMP ATOMIC intrinsik argumen harus berupa '%s' di %L" #: fortran/openmp.c:1203 #, no-c-format msgid "!$OMP ATOMIC assignment must have an operator or intrinsic on right hand side at %L" -msgstr "" +msgstr "!$OMP ATOMIC assignmen harus memiliki sebuah operator atau instrinsik di tangan sebelah kanan di %L" #: fortran/openmp.c:1305 #, no-c-format msgid "!$OMP DO cannot be a DO WHILE or DO without loop control at %L" -msgstr "" +msgstr "!$OMP DO tidak dapat berupa sebuah DO WHILE atau DO tanpa pengontrol loop di %L" #: fortran/openmp.c:1311 #, no-c-format msgid "!$OMP DO iteration variable must be of type integer at %L" -msgstr "" +msgstr "!$OMP DO variabel iterasi harus berupa tipe integer di %L" #: fortran/openmp.c:1315 #, no-c-format msgid "!$OMP DO iteration variable must not be THREADPRIVATE at %L" -msgstr "" +msgstr "!$OMP DO variabel iterasi tidak boleh berupa THREADPRIVATE di %L" #: fortran/openmp.c:1323 #, no-c-format msgid "!$OMP DO iteration variable present on clause other than PRIVATE or LASTPRIVATE at %L" -msgstr "" +msgstr "!$OMP DO variabel iterasi ada dalam clause selain dari PRIVATE atau LASTPRIVATE di %L" #: fortran/options.c:219 #, no-c-format msgid "Option -fwhole-program is not supported for Fortran" -msgstr "" +msgstr "Opsi -fwhole-program tidak didukung untuk Fortran" #: fortran/options.c:273 #, no-c-format msgid "Reading file '%s' as free form" -msgstr "" +msgstr "Membaca berkas '%s' sebagai bentuk bebas" #: fortran/options.c:283 #, no-c-format msgid "'-fd-lines-as-comments' has no effect in free form" -msgstr "" +msgstr "'-fd-lines-as-comments' tidak memiliki efek dalam format bebas" #: fortran/options.c:286 #, no-c-format msgid "'-fd-lines-as-code' has no effect in free form" -msgstr "" +msgstr "'-fd-lines-as-code' tidak memiliki efek dalam format bebas" #: fortran/options.c:312 #, no-c-format msgid "Flag -fno-automatic overwrites -fmax-stack-var-size=%d" -msgstr "" +msgstr "Opsi -fno-automatic overwrites -fmax-stack-var-size=%d" #: fortran/options.c:315 #, no-c-format msgid "Flag -fno-automatic overwrites -frecursive" -msgstr "" +msgstr "Opsi -fno-automatic overwrites -frecursive" #: fortran/options.c:317 #, no-c-format msgid "Flag -fno-automatic overwrites -frecursive implied by -fopenmp" -msgstr "" +msgstr "Opsi -fno-automatic overwrites -frecursive diimplikasikan dengan -fopenmp" #: fortran/options.c:321 #, no-c-format msgid "Flag -frecursive overwrites -fmax-stack-var-size=%d" -msgstr "" +msgstr "Opsi -frecursive overwrites -fmax-stack-var-size=%d" #: fortran/options.c:325 #, no-c-format msgid "Flag -fmax-stack-var-size=%d overwrites -frecursive implied by -fopenmp" -msgstr "" +msgstr "Opsi -fmax-stack-var-size=%d overwrites -frecursive diimplikasikan dengan -fopenmp" #: fortran/options.c:392 #, c-format msgid "gfortran: Only one -M option allowed\n" -msgstr "" +msgstr "gfortran: Hanya satu opsi -M diperbolehkan\n" #: fortran/options.c:398 #, c-format msgid "gfortran: Directory required after -M\n" -msgstr "" +msgstr "gfortran: Direktori ddibutuhkan setelah -M\n" #: fortran/options.c:443 #, no-c-format msgid "Argument to -ffpe-trap is not valid: %s" -msgstr "" +msgstr "Argumen ke -ffpe-trap tidak valid: %s" #: fortran/options.c:573 #, no-c-format msgid "Fixed line length must be at least seven." -msgstr "" +msgstr "Panjang baris tetap harus paling tidak tujuh." #: fortran/options.c:591 #, no-c-format msgid "Free line length must be at least three." -msgstr "" +msgstr "Panjang baris bebas harus paling tidak tiga." #: fortran/options.c:605 #, no-c-format msgid "-static-libgfortran is not supported in this configuration" -msgstr "" +msgstr "-static-libgfortran tidak didukung dalam konfigurasi ini" #: fortran/options.c:649 #, no-c-format msgid "Maximum supported identifier length is %d" -msgstr "" +msgstr "Panjang maksimal identifier yang didukung adalah %d" #: fortran/options.c:681 #, no-c-format msgid "Unrecognized option to -finit-logical: %s" -msgstr "" +msgstr "Opsi ke -finit-logical: %s tidak dikenal" #: fortran/options.c:695 #, no-c-format msgid "Unrecognized option to -finit-real: %s" -msgstr "" +msgstr "Opsi ke -finit-real: %s tidak dikenal" #: fortran/options.c:711 #, no-c-format msgid "The value of n in -finit-character=n must be between 0 and 127" -msgstr "" +msgstr "Nilai dari n dalam -finit-character=n harus berada diantara 0 dan 127" #: fortran/options.c:794 #, no-c-format msgid "Maximum subrecord length cannot exceed %d" -msgstr "" +msgstr "Panjang maksimal subrecord tidak dapat melebihi %d" #: fortran/parse.c:451 #, no-c-format msgid "Unclassifiable statement at %C" -msgstr "" +msgstr "Pernyataan tidak terklasifikasi di %C" #: fortran/parse.c:475 #, no-c-format msgid "OpenMP directives at %C may not appear in PURE or ELEMENTAL procedures" -msgstr "" +msgstr "Direktif OpenMP di %C tidak boleh muncul dalam prosedur PURE atau ELEMENTAL" #: fortran/parse.c:553 #, no-c-format msgid "Unclassifiable OpenMP directive at %C" -msgstr "" +msgstr "Direktif OpenMP tidak terklasifikasi di %C" #: fortran/parse.c:592 fortran/parse.c:733 #, no-c-format msgid "Zero is not a valid statement label at %C" -msgstr "" +msgstr "Nol adalah bukan pernyataan label yang valid di %C" #: fortran/parse.c:599 fortran/parse.c:725 #, no-c-format msgid "Non-numeric character in statement label at %C" -msgstr "" +msgstr "Karakter tidak-numerik dalam label pernyataan di %C" #: fortran/parse.c:611 fortran/parse.c:647 fortran/parse.c:773 #, no-c-format msgid "Semicolon at %C needs to be preceded by statement" -msgstr "" +msgstr "Semikolon di %C melebihi pernyatan yang mengawalinya" #: fortran/parse.c:619 fortran/parse.c:785 #, no-c-format msgid "Ignoring statement label in empty statement at %C" -msgstr "" +msgstr "mengabaikan label pernyataan dalam pernyataan kosong di %C" #: fortran/parse.c:712 fortran/parse.c:752 #, no-c-format msgid "Bad continuation line at %C" -msgstr "" +msgstr "Baris kelanjutan buruk di %C" #: fortran/parse.c:811 #, no-c-format msgid "Line truncated at %C" -msgstr "" +msgstr "Baris terpotong di %C" #: fortran/parse.c:997 #, no-c-format msgid "FORMAT statement at %L does not have a statement label" -msgstr "" +msgstr "pernyataan FORMAT di %L tidak memiliki sebuah label pernyataan" #: fortran/parse.c:1069 msgid "arithmetic IF" -msgstr "" +msgstr "aritmetik IF" #: fortran/parse.c:1075 msgid "attribute declaration" -msgstr "" +msgstr "deklarasi atribut" #: fortran/parse.c:1105 msgid "data declaration" -msgstr "" +msgstr "deklarasi data" #: fortran/parse.c:1114 msgid "derived type declaration" -msgstr "" +msgstr "tipe deklarasi turunan" #: fortran/parse.c:1193 msgid "block IF" -msgstr "" +msgstr "blok IF" #: fortran/parse.c:1202 msgid "implied END DO" -msgstr "" +msgstr "Diimplikasikan END DO" #: fortran/parse.c:1275 msgid "assignment" -msgstr "" +msgstr "assignment" #: fortran/parse.c:1278 msgid "pointer assignment" -msgstr "" +msgstr "assignmen penunjuk" #: fortran/parse.c:1287 msgid "simple IF" -msgstr "" +msgstr "IF sederhana" #: fortran/parse.c:1503 #, no-c-format msgid "Unexpected %s statement at %C" -msgstr "" +msgstr "Tidak terduga pernyataan %s di %C" #: fortran/parse.c:1642 #, no-c-format msgid "%s statement at %C cannot follow %s statement at %L" -msgstr "" +msgstr "pernyataan %s di %C tidak dapat mengikuti pernyataan %s di %L" #: fortran/parse.c:1659 #, no-c-format msgid "Unexpected end of file in '%s'" -msgstr "" +msgstr "Tidak terduga akhir dari berkas dalam '%s'" #: fortran/parse.c:1714 #, no-c-format msgid "Fortran 2003: Derived type definition at %C without components" -msgstr "" +msgstr "Fortran 2003: Definisi tipe turunan di %C tanpa komponen" #: fortran/parse.c:1725 #, no-c-format msgid "PRIVATE statement in TYPE at %C must be inside a MODULE" -msgstr "" +msgstr "pernyataan PRIVATE dalam TYPE di %C harus berada didalam sebuah MODUL" #: fortran/parse.c:1733 #, no-c-format msgid "PRIVATE statement at %C must precede structure components" -msgstr "" +msgstr "pernyataan PRIVATE di %C harus mengawali struktur komponen" #: fortran/parse.c:1741 #, no-c-format msgid "Duplicate PRIVATE statement at %C" -msgstr "" +msgstr "Duplikasi pernyataan PRIVATE di %C" #: fortran/parse.c:1753 #, no-c-format msgid "SEQUENCE statement at %C must precede structure components" -msgstr "" +msgstr "pernyataan SEQUENCE di %C harus mengawali struktur komponen" #: fortran/parse.c:1760 #, no-c-format msgid "SEQUENCE attribute at %C already specified in TYPE statement" -msgstr "" +msgstr "atribut SEQUENCE di %C telah dispesifikasikan dalam pernyataan TIPE" #: fortran/parse.c:1765 #, no-c-format msgid "Duplicate SEQUENCE statement at %C" -msgstr "" +msgstr "Duplikasi pernyataan SEQUENCE di %C" #: fortran/parse.c:1856 #, no-c-format msgid "ENUM declaration at %C has no ENUMERATORS" -msgstr "" +msgstr "deklarasi ENUM di %C tidak memiliki ENUMERASI" #: fortran/parse.c:1934 #, no-c-format msgid "Unexpected %s statement in INTERFACE block at %C" -msgstr "" +msgstr "Tidak terduga pernyataan %s dalam ANTAR-MUKA blok di %C" #: fortran/parse.c:1960 #, no-c-format msgid "SUBROUTINE at %C does not belong in a generic function interface" -msgstr "" +msgstr "SUBROUTINE di %C tidak termasuk dalam sebuah antar-muka fungsi umum" #: fortran/parse.c:1964 #, no-c-format msgid "FUNCTION at %C does not belong in a generic subroutine interface" -msgstr "" +msgstr "FUNGSI di %C tidak termasuk dalam sebuah subrutin antar-muka umum" #: fortran/parse.c:1974 #, no-c-format msgid "Name '%s' of ABSTRACT INTERFACE at %C cannot be the same as an intrinsic type" -msgstr "" +msgstr "Nama '%s' dari ANTAR-MUKA ABSTRAK di %C tidak dapat sama dengan sebuah tipe intrinsik" #: fortran/parse.c:2005 #, no-c-format msgid "Unexpected %s statement at %C in INTERFACE body" -msgstr "" +msgstr "Tidak terduga pernyataan %s di %C dalam tubuh ANTAR-MUKA" #: fortran/parse.c:2019 #, no-c-format msgid "INTERFACE procedure '%s' at %L has the same name as the enclosing procedure" -msgstr "" +msgstr "prosedur ANTAR-MUKA '%s' di %L memiliki nama sama dengan prosedur yang melingkupinya" #: fortran/parse.c:2134 #, no-c-format msgid "%s statement must appear in a MODULE" -msgstr "" +msgstr "pernyataan %s harus muncul dalam sebuah MODUL" #: fortran/parse.c:2141 #, no-c-format msgid "%s statement at %C follows another accessibility specification" -msgstr "" +msgstr "pernyataan %s di %C mengikuti spesifikasi aksesbiliti lain" #: fortran/parse.c:2191 #, no-c-format msgid "Bad kind expression for function '%s' at %L" -msgstr "" +msgstr "Jenis ekspresi buruk untuk fungsi '%s' di %L" #: fortran/parse.c:2195 #, no-c-format msgid "The type for function '%s' at %L is not accessible" -msgstr "" +msgstr "Tipe dari fungsi '%s' di %L tidak dapat diakses" #: fortran/parse.c:2253 #, no-c-format msgid "ELSEWHERE statement at %C follows previous unmasked ELSEWHERE" -msgstr "" +msgstr "pernyataan ELSEWHERE di %C mengikuti tidak bertopen ELSEWHERE" #: fortran/parse.c:2274 #, no-c-format msgid "Unexpected %s statement in WHERE block at %C" -msgstr "" +msgstr "Tidak terduga pernyataan %s dalam blok WHERE di %C" #: fortran/parse.c:2333 #, no-c-format msgid "Unexpected %s statement in FORALL block at %C" -msgstr "" +msgstr "Tidak terduga pernyataan %s dalam blok FORALL di %C" #: fortran/parse.c:2384 #, no-c-format msgid "ELSE IF statement at %C cannot follow ELSE statement at %L" -msgstr "" +msgstr "pernyataan ELSE IF di %C tidak dapat mengikuti pernyataan ELSE di %L" #: fortran/parse.c:2402 #, no-c-format msgid "Duplicate ELSE statements at %L and %C" -msgstr "" +msgstr "Duplikasi pernyataan ELSE di %L dan %C" #: fortran/parse.c:2463 #, no-c-format msgid "Expected a CASE or END SELECT statement following SELECT CASE at %C" -msgstr "" +msgstr "Diduga sebuah pernyataan CASE atau END SELECT mengikuti SELECT CASE di %C" #: fortran/parse.c:2521 #, no-c-format msgid "Variable '%s' at %C cannot be redefined inside loop beginning at %L" -msgstr "" +msgstr "Variabel '%s' di %C tidak dapat diredefinisi didalam loop berawal di %L" #: fortran/parse.c:2555 #, no-c-format msgid "End of nonblock DO statement at %C is within another block" -msgstr "" +msgstr "Akhir dari pernyataan bukan blok DO di %C adalah didalam blok lain" #: fortran/parse.c:2564 #, no-c-format msgid "End of nonblock DO statement at %C is interwoven with another DO loop" -msgstr "" +msgstr "Akhir dari pernyataan bukan blok DO di %C adalah interwoven dengan DO loop lainnya" #: fortran/parse.c:2613 #, no-c-format msgid "Statement label in ENDDO at %C doesn't match DO label" -msgstr "" +msgstr "Pernyataan label dalam ENDDO di %C tidak cocok dengan label DO" #: fortran/parse.c:2629 #, no-c-format msgid "named block DO at %L requires matching ENDDO name" -msgstr "" +msgstr "blok bernama DO di %L membutuhkan nama ENDDO yang sama" #: fortran/parse.c:2885 #, no-c-format msgid "Name after !$omp critical and !$omp end critical does not match at %C" -msgstr "" +msgstr "Nama setelah !$omp kritis dan !$omp akhir kritis tidak cocok di %C" #: fortran/parse.c:2941 #, no-c-format msgid "%s statement at %C cannot terminate a non-block DO loop" -msgstr "" +msgstr "pernyataan %s di %C tidak dapat mengakhiri sebuah bukan blok DO loop" #: fortran/parse.c:3126 #, no-c-format msgid "Contained procedure '%s' at %C is already ambiguous" -msgstr "" +msgstr "Prosedur berisi '%s' di %C telah ambigu" #: fortran/parse.c:3176 #, no-c-format msgid "Unexpected %s statement in CONTAINS section at %C" -msgstr "" +msgstr "Tidak terduga pernyataan %s dalam daerah CONTAINS di %C" #. This is valid in Fortran 2008. #: fortran/parse.c:3201 #, no-c-format msgid "Extension: CONTAINS statement without FUNCTION or SUBROUTINE statement at %C" -msgstr "" +msgstr "Ekstensi: pernyataan CONTAINS tanpa pernyataan FUNCTION atau SUBROUTINE di %C" #: fortran/parse.c:3272 #, no-c-format msgid "CONTAINS statement at %C is already in a contained program unit" -msgstr "" +msgstr "pernyataan CONTAINS di %C telah berada dalam satuan aplikasi terisi" #: fortran/parse.c:3321 #, no-c-format msgid "Global name '%s' at %L is already being used as a %s at %L" -msgstr "" +msgstr "Nama global '%s' di %L telah digunakan sebuah sebuah %s di %L" #: fortran/parse.c:3342 #, no-c-format msgid "Blank BLOCK DATA at %C conflicts with prior BLOCK DATA at %L" -msgstr "" +msgstr "BLOK DATA kosong di %C konflik dengan BLOK DATA sebelumnya di %L" #: fortran/parse.c:3368 #, no-c-format msgid "Unexpected %s statement in BLOCK DATA at %C" -msgstr "" +msgstr "Tidak terduga pernyataan %s dalam BLOK DATA di %C" #: fortran/parse.c:3411 #, no-c-format msgid "Unexpected %s statement in MODULE at %C" -msgstr "" +msgstr "Tidak terduga pernyataan %s dalam MODUL di %C" #. If we see a duplicate main program, shut down. If the second #. instance is an implied main program, ie data decls or executable @@ -8476,716 +8481,716 @@ msgstr "" #: fortran/parse.c:3594 #, no-c-format msgid "Two main PROGRAMs at %L and %C" -msgstr "" +msgstr "Dua APLIKASI utama di %L dan %C" #: fortran/primary.c:87 #, no-c-format msgid "Missing kind-parameter at %C" -msgstr "" +msgstr "Hilang parameter jenis di %C" #: fortran/primary.c:210 #, no-c-format msgid "Integer kind %d at %C not available" -msgstr "" +msgstr "Jenis integer %d di %C tidak tersedia" #: fortran/primary.c:218 #, no-c-format msgid "Integer too big for its kind at %C. This check can be disabled with the option -fno-range-check" -msgstr "" +msgstr "Integer terlalu besar untuk jenis ini di %C. Pemeriksaan ini dapat dinon-aktifkan dengan opsi -fno-range-check" #: fortran/primary.c:247 #, no-c-format msgid "Extension: Hollerith constant at %C" -msgstr "" +msgstr "Ekstensi: Konstanta Hollerith di %C" #: fortran/primary.c:259 #, no-c-format msgid "Invalid Hollerith constant: %L must contain at least one character" -msgstr "" +msgstr "Konstanta Hollerith tidak valid: %L harus berisi paling tidak satu karakter" #: fortran/primary.c:265 #, no-c-format msgid "Invalid Hollerith constant: Integer kind at %L should be default" -msgstr "" +msgstr "Konstanta Hollerith tidak valid: Jenis integer di %L seharusnya baku" #: fortran/primary.c:353 #, no-c-format msgid "Extension: Hexadecimal constant at %C uses non-standard syntax" -msgstr "" +msgstr "Ekstensi: Konstanta Heksadesimal di %C menggunakan sintaks tidak baku" #: fortran/primary.c:363 #, no-c-format msgid "Empty set of digits in BOZ constant at %C" -msgstr "" +msgstr "Set kosong dari digits dalam konstanta BOZ di %C" #: fortran/primary.c:369 #, no-c-format msgid "Illegal character in BOZ constant at %C" -msgstr "" +msgstr "Karakter tidak legal dalam konstanta BOZ di %C" #: fortran/primary.c:392 #, no-c-format msgid "Extension: BOZ constant at %C uses non-standard postfix syntax" -msgstr "" +msgstr "Ekstensi: konstanta BOZ di %C menggunakan sintaks postfix tidak baku" #: fortran/primary.c:423 #, no-c-format msgid "Integer too big for integer kind %i at %C" -msgstr "" +msgstr "Integer terlalu besar untuk jenis integer %i di %C" #: fortran/primary.c:429 #, no-c-format msgid "Fortran 2003: BOZ used outside a DATA statement at %C" -msgstr "" +msgstr "Fortran2003: BOZ digunakan diluar dari pernyataan DATA di %C" #: fortran/primary.c:529 #, no-c-format msgid "Missing exponent in real number at %C" -msgstr "" +msgstr "Hilang eksponen dalam nomor ril di %C" #: fortran/primary.c:585 #, no-c-format msgid "Real number at %C has a 'd' exponent and an explicit kind" -msgstr "" +msgstr "Nomor ril di %C memiliki sebuah 'd' eksponen dan sebuah jenis eksplisit" #: fortran/primary.c:598 #, no-c-format msgid "Invalid real kind %d at %C" -msgstr "" +msgstr "Jenis ril %d di %C tidak valid" #: fortran/primary.c:612 #, no-c-format msgid "Real constant overflows its kind at %C" -msgstr "" +msgstr "Konstanta ril overflow jenisnya di %C" #: fortran/primary.c:617 #, no-c-format msgid "Real constant underflows its kind at %C" -msgstr "" +msgstr "Konstanta ril underflow jenisnya di %C" #: fortran/primary.c:709 #, no-c-format msgid "Syntax error in SUBSTRING specification at %C" -msgstr "" +msgstr "Sintaks error dalam spesifikasi SUBSTRING di %C" #: fortran/primary.c:914 #, no-c-format msgid "Invalid kind %d for CHARACTER constant at %C" -msgstr "" +msgstr "Jenis tidak valid %d untuk konstanta KARAKTER di %C" #: fortran/primary.c:935 #, no-c-format msgid "Unterminated character constant beginning at %C" -msgstr "" +msgstr "Konstanta karakter tidak terselesaikan berawal di %C" #: fortran/primary.c:1047 #, no-c-format msgid "Bad kind for logical constant at %C" -msgstr "" +msgstr "Jenis buruk untuk konstanta logikal di %C" #: fortran/primary.c:1086 #, no-c-format msgid "Expected PARAMETER symbol in complex constant at %C" -msgstr "" +msgstr "Diduga simbol PARAMETER dalam konstanta kompleks di %C" #: fortran/primary.c:1092 #, no-c-format msgid "Numeric PARAMETER required in complex constant at %C" -msgstr "" +msgstr "PARAMETER numerik dibutuhkan dalam konstanta kompleks di %C" #: fortran/primary.c:1098 #, no-c-format msgid "Scalar PARAMETER required in complex constant at %C" -msgstr "" +msgstr "Skalar PARAMETER dibutuhkan dalam konstanta kompleks di %C" #: fortran/primary.c:1102 #, no-c-format msgid "Fortran 2003: PARAMETER symbol in complex constant at %C" -msgstr "" +msgstr "Fortran 2003: PARAMETER simbol dalam konstanta kompleks di %C" #: fortran/primary.c:1132 #, no-c-format msgid "Error converting PARAMETER constant in complex constant at %C" -msgstr "" +msgstr "Error mengubah PARAMETER konstanta dalam konstanta kompleks di %C" #: fortran/primary.c:1261 #, no-c-format msgid "Syntax error in COMPLEX constant at %C" -msgstr "" +msgstr "Sintaks error dalam konstanta COMPLEKS di %C" #: fortran/primary.c:1442 #, no-c-format msgid "Keyword '%s' at %C has already appeared in the current argument list" -msgstr "" +msgstr "Kata-kunci '%s' di %C telah muncul dalam daftar argumen sekarang" #: fortran/primary.c:1506 #, no-c-format msgid "Extension: argument list function at %C" -msgstr "" +msgstr "Ekstensi: daftar fungsi argumen di %C" #: fortran/primary.c:1573 #, no-c-format msgid "Expected alternate return label at %C" -msgstr "" +msgstr "Diduga alternatif label kembali di %C" #: fortran/primary.c:1591 #, no-c-format msgid "Missing keyword name in actual argument list at %C" -msgstr "" +msgstr "Hilang nama kata kunci dalam daftar argumen aktual di %C" #: fortran/primary.c:1636 #, no-c-format msgid "Syntax error in argument list at %C" -msgstr "" +msgstr "Sintaks error dalam daftar argumen di %C" #: fortran/primary.c:1723 #, no-c-format msgid "Expected structure component name at %C" -msgstr "" +msgstr "Diduga nama struktur komponen di %C" #: fortran/primary.c:1980 #, no-c-format msgid "Too many components in structure constructor at %C" -msgstr "" +msgstr "Terlalu banyak komponen dalam struktur konstruktor di %C" #: fortran/primary.c:1993 #, no-c-format msgid "Structure constructor for '%s' at %C has PRIVATE components" -msgstr "" +msgstr "Struktur konstruktor untuk '%s' di %C memiliki komponen PRIVATE" #: fortran/primary.c:2003 #, no-c-format msgid "Too few components in structure constructor at %C" -msgstr "" +msgstr "Terlalu sedikit komponen dalam struktur konstruktor di %C" #: fortran/primary.c:2021 #, no-c-format msgid "Syntax error in structure constructor at %C" -msgstr "" +msgstr "Sintaks error dalam struktur konstruktor di %C" #: fortran/primary.c:2105 #, no-c-format msgid "'%s' at %C is the name of a recursive function and so refers to the result variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)" -msgstr "" +msgstr "'%s' di %C adalah nama dari sebuah fungsi rekursi dan jadi merefer ke hasil variabel. Gunakan sebuah variabel RESULT eksplisit untuk rekursif langsung (12.5.2.1)" #: fortran/primary.c:2207 #, no-c-format msgid "Unexpected use of subroutine name '%s' at %C" -msgstr "" +msgstr "Tidak diduga penggunaan dari nama subroutine '%s' di %C" #: fortran/primary.c:2238 #, no-c-format msgid "Statement function '%s' requires argument list at %C" -msgstr "" +msgstr "Pernyataan fungsi '%s' membutuhkan daftar argumen di %C" #: fortran/primary.c:2241 #, no-c-format msgid "Function '%s' requires an argument list at %C" -msgstr "" +msgstr "Fungsi '%s' membutuhkan sebuah daftar argumen di %C" #: fortran/primary.c:2286 #, no-c-format msgid "Missing argument to '%s' at %C" -msgstr "" +msgstr "Hilang argumen ke '%s' di %C" #: fortran/primary.c:2427 #, no-c-format msgid "Missing argument list in function '%s' at %C" -msgstr "" +msgstr "Hilang daftar argumen dalam fungsi '%s' di %C" #: fortran/primary.c:2455 #, no-c-format msgid "Symbol at %C is not appropriate for an expression" -msgstr "" +msgstr "Simbol di %C tidak sesuai untuk sebuah ekspresi" #: fortran/primary.c:2523 #, no-c-format msgid "Assigning to PROTECTED variable at %C" -msgstr "" +msgstr "Assigning ke variabel TERPROTEKSI di %C" #: fortran/primary.c:2557 #, no-c-format msgid "Named constant at %C in an EQUIVALENCE" -msgstr "" +msgstr "Konstanta bernama di %C dalam sebuah EQUIVALENCE" #: fortran/primary.c:2579 #, no-c-format msgid "'%s' at %C is not a variable" -msgstr "" +msgstr "'%s' di %C bukan sebuah variabel" #: fortran/resolve.c:121 #, no-c-format msgid "Alternate return specifier in elemental subroutine '%s' at %L is not allowed" -msgstr "" +msgstr "Alternatif return penspesifikasi dalam subroutine elemental '%s' di %L tidak diperbolehkan" #: fortran/resolve.c:125 #, no-c-format msgid "Alternate return specifier in function '%s' at %L is not allowed" -msgstr "" +msgstr "Alternatif return penspesifikasi dalam fungsi '%s' di %L tidak diperbolehkan" #: fortran/resolve.c:138 #, no-c-format msgid "Dummy procedure '%s' of PURE procedure at %L must also be PURE" -msgstr "" +msgstr "Prosedur dummy '%s' dari prosedur PURE di %L harus juga PURE" #: fortran/resolve.c:145 #, no-c-format msgid "Dummy procedure at %L not allowed in ELEMENTAL procedure" -msgstr "" +msgstr "Prosedur dummy di %L tidak diperbolehkan dalam prosedur ELEMENTAL" #: fortran/resolve.c:158 fortran/resolve.c:1138 #, no-c-format msgid "Unable to find a specific INTRINSIC procedure for the reference '%s' at %L" -msgstr "" +msgstr "Tidak dapat menemukan sebuah prosedur INTRINSIK spesifik untuk referensi '%s' di %L" #: fortran/resolve.c:202 #, no-c-format msgid "Argument '%s' of pure function '%s' at %L must be INTENT(IN)" -msgstr "" +msgstr "Argumen '%s' dari fungsi pure '%s' di %L harus berupa INTENT(IN)" #: fortran/resolve.c:207 #, no-c-format msgid "Argument '%s' of pure subroutine '%s' at %L must have its INTENT specified" -msgstr "" +msgstr "Argumen '%s' dari subroutine pure '%s' di %L harus memiliki spesifikasi INTENT-nya" #: fortran/resolve.c:216 #, no-c-format msgid "Argument '%s' of elemental procedure at %L must be scalar" -msgstr "" +msgstr "Argumen '%s' dari prosedur elemental di %L harus berupa skalar" #: fortran/resolve.c:223 #, no-c-format msgid "Argument '%s' of elemental procedure at %L cannot have the POINTER attribute" -msgstr "" +msgstr "Argumen '%s' dari prosedur elemental di %L tidak dapat memiliki atribut POINTER" #: fortran/resolve.c:231 #, no-c-format msgid "Dummy procedure '%s' not allowed in elemental procedure '%s' at %L" -msgstr "" +msgstr "Prosedur dummy '%s' tidak diperbolehkan dalam elemtal prosedur '%s' di %L" #: fortran/resolve.c:243 #, no-c-format msgid "Argument '%s' of statement function at %L must be scalar" -msgstr "" +msgstr "Argumen '%s' dalam pernyataan fungsi di %L harus berupa skalar" #: fortran/resolve.c:253 #, no-c-format msgid "Character-valued argument '%s' of statement function at %L must have constant length" -msgstr "" +msgstr "Nilai-karakter argumen '%s' dari pernyataan fungsi di %L harus memiliki panjang konstan" #: fortran/resolve.c:310 #, no-c-format msgid "Contained function '%s' at %L has no IMPLICIT type" -msgstr "" +msgstr "Fungsi yang berisi '%s' di %L tidak memiliki tipe IMPLISIT" #: fortran/resolve.c:313 #, no-c-format msgid "Result '%s' of contained function '%s' at %L has no IMPLICIT type" -msgstr "" +msgstr "Hasil '%s' dari fungsi yang berisi '%s' di %L tidak memiliki tipe IMPLISIT" #: fortran/resolve.c:330 #, no-c-format msgid "Character-valued internal function '%s' at %L must not be assumed length" -msgstr "" +msgstr "Nilai-karakter fungsi internal '%s' di %L tidak boleh dengan panjang diasumsikan" #: fortran/resolve.c:501 #, no-c-format msgid "Function %s at %L has entries with mismatched array specifications" -msgstr "" +msgstr "Fungsi %s di %L memiliki masukan dengan spesifikasi array tidak cocok" #: fortran/resolve.c:518 #, no-c-format msgid "Extension: Function %s at %L with entries returning variables of different string lengths" -msgstr "" +msgstr "Ekstensi: Fungsi %s di %L dengan masukan mengembalikan variabel dari panjang string berbeda" #: fortran/resolve.c:545 #, no-c-format msgid "FUNCTION result %s can't be an array in FUNCTION %s at %L" -msgstr "" +msgstr "Hasil FUNGSI %s tidak dapat berupa sebuah array dalam FUNGSI %s di %L" #: fortran/resolve.c:549 #, no-c-format msgid "ENTRY result %s can't be an array in FUNCTION %s at %L" -msgstr "" +msgstr "Hasil MASUKAN %s tidak dapat berupa sebuah array dalam FUNGSI %s di %L" #: fortran/resolve.c:556 #, no-c-format msgid "FUNCTION result %s can't be a POINTER in FUNCTION %s at %L" -msgstr "" +msgstr "Hasil FUNGSI %s tidak dapat berupa sebuah PENUNJUK dalam FUNGSI %s di %L" #: fortran/resolve.c:560 #, no-c-format msgid "ENTRY result %s can't be a POINTER in FUNCTION %s at %L" -msgstr "" +msgstr "Hasil MASUKAN %s tidak dapat berupa sebuah PENUNJUK dalam FUNGSI %s di %L" #: fortran/resolve.c:598 #, no-c-format msgid "FUNCTION result %s can't be of type %s in FUNCTION %s at %L" -msgstr "" +msgstr "Hasil FUNGSI %s tidak dapat tipe %s dalam FUNGSI %s di %L" #: fortran/resolve.c:603 #, no-c-format msgid "ENTRY result %s can't be of type %s in FUNCTION %s at %L" -msgstr "" +msgstr "Hasil MASUKAN %s tidak dapat tipe %s dalam FUNGSI %s di %L" #: fortran/resolve.c:661 #, no-c-format msgid "Variable '%s' at %L is in COMMON but only in BLOCK DATA initialization is allowed" -msgstr "" +msgstr "Variabel '%s' di %L adalah dalam COMMON tetapi hanya dalam inisialisasi BLOK DATA yang diperbolehkan" #: fortran/resolve.c:665 #, no-c-format msgid "Initialized variable '%s' at %L is in a blank COMMON but initialization is only allowed in named common blocks" -msgstr "" +msgstr "variabel terinisialisasi '%s' di %L adalah dalam sebuah kosong COMMON tetapi inisialisasi hanya diperbolehkan dalam blok umum bernama" #: fortran/resolve.c:676 #, no-c-format msgid "Derived type variable '%s' in COMMON at %L has neither the SEQUENCE nor the BIND(C) attribute" -msgstr "" +msgstr "Tipe variabel turunan '%s' dalam COMMON di %L memiliki bukan SEQUENCE ataupun atribut BIND(C)" #: fortran/resolve.c:680 #, no-c-format msgid "Derived type variable '%s' in COMMON at %L has an ultimate component that is allocatable" -msgstr "" +msgstr "Tipe variabel turunan '%s' dalam COMMON di %L memiliki sebuah komponen ultimate yang dapat dialokasikan" #: fortran/resolve.c:684 #, no-c-format msgid "Derived type variable '%s' in COMMON at %L may not have default initializer" -msgstr "" +msgstr "Tipe variabel turunan '%s' dalam COMMOND di %L tidak boleh memiliki penginisialisasi baku" #: fortran/resolve.c:711 #, no-c-format msgid "COMMON block '%s' at %L is used as PARAMETER at %L" -msgstr "" +msgstr "blok COMMON '%s' di %L digunakan sebagai PARAMETER di %L" #: fortran/resolve.c:715 #, no-c-format msgid "COMMON block '%s' at %L is also an intrinsic procedure" -msgstr "" +msgstr "blok COMMON '%s' di %L juga sebuah prosedur intrinsik" #: fortran/resolve.c:719 #, no-c-format msgid "Fortran 2003: COMMON block '%s' at %L that is also a function result" -msgstr "" +msgstr "Fortran 2003: blok common '%s' di %L yang juga sebuah hasil fungsi" #: fortran/resolve.c:724 #, no-c-format msgid "Fortran 2003: COMMON block '%s' at %L that is also a global procedure" -msgstr "" +msgstr "Fortran 2003: blok COMMON '%s' di %L yang juga sebuah prosedur global" #: fortran/resolve.c:786 #, no-c-format msgid "Components of structure constructor '%s' at %L are PRIVATE" -msgstr "" +msgstr "Komponen dari struktur konstruktor '%s' di %L adalah PRIVATE" #: fortran/resolve.c:808 #, no-c-format msgid "The rank of the element in the derived type constructor at %L does not match that of the component (%d/%d)" -msgstr "" +msgstr "Tingkat dari elemen dalam tipe konstruktor turunan di %L tidak cocok dengan komponen (%d/%d)" #: fortran/resolve.c:821 #, no-c-format msgid "The element in the derived type constructor at %L, for pointer component '%s', is %s but should be %s" -msgstr "" +msgstr "Elemen dalam tipe konstruktor turunan di %L, untuk komponen penunjuk '%s', adalah %s tetapi seharusnya berupa %s" #: fortran/resolve.c:838 #, no-c-format msgid "The element in the derived type constructor at %L, for pointer component '%s' should be a POINTER or a TARGET" -msgstr "" +msgstr "Elemen dalam tipe konstruktor turunan di %L, untuk komponen penunjuk '%s' seharusnya berupa sebuah PENUNJUK atau sebuah TARGET" #: fortran/resolve.c:965 #, no-c-format msgid "The upper bound in the last dimension must appear in the reference to the assumed size array '%s' at %L" -msgstr "" +msgstr "Batas atas dalam dimensi terakhir harus muncul dalam referensi ke ukuran array yang diasumsikan '%s' di %L" #: fortran/resolve.c:1029 fortran/resolve.c:5576 fortran/resolve.c:6282 #, no-c-format msgid "Label %d referenced at %L is never defined" -msgstr "" +msgstr "Label %d direferensikan di %L tidak pernah terdefinisi" #: fortran/resolve.c:1039 #, no-c-format msgid "'%s' at %L is ambiguous" -msgstr "" +msgstr "'%s' di %L adalah ambigu" #: fortran/resolve.c:1075 #, no-c-format msgid "Statement function '%s' at %L is not allowed as an actual argument" -msgstr "" +msgstr "Pernyataan fungsi '%s' di %L tidak diperbolehkan sebagai argumen aktual" #: fortran/resolve.c:1083 #, no-c-format msgid "Intrinsic '%s' at %L is not allowed as an actual argument" -msgstr "" +msgstr "Intrinsik '%s' di %L tidak diperbolehkan sebagai sebuah argumen aktual" #: fortran/resolve.c:1090 #, no-c-format msgid "Internal procedure '%s' is not allowed as an actual argument at %L" -msgstr "" +msgstr "Prosedur internal '%s' tidak diperbolehkan sebagai sebuah argumen aktual di %L" #: fortran/resolve.c:1096 #, no-c-format msgid "ELEMENTAL non-INTRINSIC procedure '%s' is not allowed as an actual argument at %L" -msgstr "" +msgstr "ELEMENTAL bukan INTRINSIK prosedur '%s' tidak diperbolehkan sebagai sebuah argumen aktual di %L" #: fortran/resolve.c:1116 #, no-c-format msgid "GENERIC procedure '%s' is not allowed as an actual argument at %L" -msgstr "" +msgstr "prosedur UMUM '%s' tidak diperbolehkan sebagai sebuah argumen aktual di %L" #: fortran/resolve.c:1157 #, no-c-format msgid "Symbol '%s' at %L is ambiguous" -msgstr "" +msgstr "Simbol '%s' di %L adalah ambigu" #: fortran/resolve.c:1206 #, no-c-format msgid "By-value argument at %L is not of numeric type" -msgstr "" +msgstr "Argumen dengan nilai di %L adalah bukan tipe numerik" #: fortran/resolve.c:1213 #, no-c-format msgid "By-value argument at %L cannot be an array or an array section" -msgstr "" +msgstr "Argumen dengan nilai di %L tidak dapat berupa sebuah array atau sebuah daerah array" #: fortran/resolve.c:1227 #, no-c-format msgid "By-value argument at %L is not allowed in this context" -msgstr "" +msgstr "Argumen dengan nilai di %L tidak diperbolehkan dalam konteks ini" #: fortran/resolve.c:1239 #, no-c-format msgid "Passing internal procedure at %L by location not allowed" -msgstr "" +msgstr "Melewati prosedur internal di %L dengan lokasi tidak diperbolehkan" #: fortran/resolve.c:1356 #, no-c-format msgid "'%s' at %L is an array and OPTIONAL; IF IT IS MISSING, it cannot be the actual argument of an ELEMENTAL procedure unless there is a non-optional argument with the same rank (12.4.1.5)" -msgstr "" +msgstr "'%s' di %L adalah sebuah array dan OPSIONAL; JIKA INI HILANG, ini tidak dapat berupa argumen aktual dari sebual prosedur ELEMENTAL kecuali disana ada sebuah tidak opsional argumen dengan tingkat sama (12.4.1.5)" #: fortran/resolve.c:1378 msgid "elemental procedure" -msgstr "" +msgstr "prosedur elemental" #: fortran/resolve.c:1395 #, no-c-format msgid "Actual argument at %L for INTENT(%s) dummy '%s' of ELEMENTAL subroutine '%s' is a scalar, but another actual argument is an array" -msgstr "" +msgstr "Argumen aktual di %L untuk INTENT(%s) dummy '%s' dari subroutine ELEMENTAL '%s' adalah sebuah skalar, tetapi argumen aktual lain adalah sebuah array" #: fortran/resolve.c:1531 #, no-c-format msgid "There is no specific function for the generic '%s' at %L" -msgstr "" +msgstr "Disana tidak ada fungsi spesifik untuk umum '%s' di %L" #: fortran/resolve.c:1540 #, no-c-format msgid "Generic function '%s' at %L is not consistent with a specific intrinsic interface" -msgstr "" +msgstr "Fungsi umum '%s' di %L tidak konsisten dengan sebuah antar-muka spesifik intrinsik." #: fortran/resolve.c:1594 #, no-c-format msgid "Function '%s' at %L is INTRINSIC but is not compatible with an intrinsic" -msgstr "" +msgstr "Fungsi '%s' di %L adalah INTRINSIK tetapi tidak kompatibel dengan sebuah intrinsik" #: fortran/resolve.c:1640 #, no-c-format msgid "Unable to resolve the specific function '%s' at %L" -msgstr "" +msgstr "Tidak dapat meresolf fungsi spesifik '%s'di %L" #: fortran/resolve.c:1696 fortran/resolve.c:8931 #, no-c-format msgid "Function '%s' at %L has no IMPLICIT type" -msgstr "" +msgstr "Fungsi '%s' di %L tidak memiliki tipe IMPLISIT" #: fortran/resolve.c:1907 #, no-c-format msgid "Argument to '%s' at %L is not a variable" -msgstr "" +msgstr "Argumen ke '%s' di %L bukan sebuah variabel" #: fortran/resolve.c:1979 #, no-c-format msgid "More actual than formal arguments in '%s' call at %L" -msgstr "" +msgstr "Lebih aktual dari argumen formal dalam '%s' panggilan di %L" #: fortran/resolve.c:1991 #, no-c-format msgid "Parameter '%s' to '%s' at %L must be either a TARGET or an associated pointer" -msgstr "" +msgstr "Parameter '%s' ke '%s' di %L harus baik sebuah TARGET atau sebuah penunjuk berasosiasi" #: fortran/resolve.c:2017 #, no-c-format msgid "Allocatable variable '%s' used as a parameter to '%s' at %L must not be an array of zero size" -msgstr "" +msgstr "Variabel yang dapat dialokasikan '%s' digunakan sebagai sebuah parameter ke '%s' di %L tidak boleh berupa sebuah array berukuran nol" #: fortran/resolve.c:2034 #, no-c-format msgid "Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' because it is not C interoperable" -msgstr "" +msgstr "Diasumsikan-bentuk array '%s' di %L tidak dapat berupa sebuah argumen ke prosedur '%s' karena ini bukan C interoperable" #: fortran/resolve.c:2044 #, no-c-format msgid "Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' because it is not C interoperable" -msgstr "" +msgstr "Deferred-shape array '%s' di %L tidak dapat berupa sebuah argumen ke prosedur '%s' karena ini bukan C interoperable" #: fortran/resolve.c:2067 fortran/resolve.c:2106 #, no-c-format msgid "CHARACTER argument '%s' to '%s' at %L must have a length of 1" -msgstr "" +msgstr "argumen KARAKTER '%s' ke '%s' di %L harus memiliki panjang 1" #. Case 1c, section 15.1.2.5, J3/04-007: an associated #. scalar pointer. #: fortran/resolve.c:2082 #, no-c-format msgid "Argument '%s' to '%s' at %L must be an associated scalar POINTER" -msgstr "" +msgstr "Argumen '%s' ke '%s' di %L harus berupa sebuah skalar PENUNJUK berasosiasi" #: fortran/resolve.c:2098 #, no-c-format msgid "Parameter '%s' to '%s' at %L must be a scalar" -msgstr "" +msgstr "Parameter '%s' ke '%s' di %L harus berupa sebuah skalar" #. TODO: Update this error message to allow for procedure #. pointers once they are implemented. #: fortran/resolve.c:2120 #, no-c-format msgid "Parameter '%s' to '%s' at %L must be a procedure" -msgstr "" +msgstr "Paramter '%s' ke '%s' di %L harus berupa sebuah prosedur" #: fortran/resolve.c:2128 #, no-c-format msgid "Parameter '%s' to '%s' at %L must be BIND(C)" -msgstr "" +msgstr "Parameter '%s' ke '%s' di %L harus berupa BIND(C)" #: fortran/resolve.c:2170 #, no-c-format msgid "'%s' at %L is not a function" -msgstr "" +msgstr "'%s' di %L bukan sebuah fungsi" #: fortran/resolve.c:2176 #, no-c-format msgid "ABSTRACT INTERFACE '%s' must not be referenced at %L" -msgstr "" +msgstr "ANTAR-MUKA ABSTRAK '%s' tidak boleh direferensikan di %L" #. Internal procedures are taken care of in resolve_contained_fntype. #: fortran/resolve.c:2219 #, no-c-format msgid "Function '%s' is declared CHARACTER(*) and cannot be used at %L since it is not a dummy argument" -msgstr "" +msgstr "Fungsi '%s' adalah dideklarasikan KARAKTER(*) dan tidak dapat digunakan di %L karena ini bukan sebuah argumen dummy" #: fortran/resolve.c:2272 #, no-c-format msgid "User defined non-ELEMENTAL function '%s' at %L not allowed in WORKSHARE construct" -msgstr "" +msgstr "Fungsi bukan-ELEMENTAL definisi pengguna '%s' di %L tidak diperbolehkan dalam WORKSHAREkonstruksi" #: fortran/resolve.c:2321 #, no-c-format msgid "reference to non-PURE function '%s' at %L inside a FORALL %s" -msgstr "" +msgstr "referensi ke fungsi bukan-PURE '%s' di %L didalam sebuah FORALL %s" #: fortran/resolve.c:2328 #, no-c-format msgid "Function reference to '%s' at %L is to a non-PURE procedure within a PURE procedure" -msgstr "" +msgstr "Referensi fungsi ke '%s' di %L adalah ke sebuah prosedur bukan-PURE dalam sebuah prosedur PURE" #: fortran/resolve.c:2343 #, no-c-format msgid "Function '%s' at %L cannot call itself, as it is not RECURSIVE" -msgstr "" +msgstr "Fungsi '%s' di %L tidak dapat memanggil dirinya sendiri, karena ini bukan REKURSIF" #: fortran/resolve.c:2351 #, no-c-format msgid "Call to ENTRY '%s' at %L is recursive, but function '%s' is not declared as RECURSIVE" -msgstr "" +msgstr "Panggilan ke MASUKAN '%s' di %L adalah rekursif, bukan fungsi '%s' tidak terdeklarasi sebagai REKURSIF" #: fortran/resolve.c:2393 #, no-c-format msgid "Subroutine call to '%s' in FORALL block at %L is not PURE" -msgstr "" +msgstr "Panggilan subroutine ke '%s' dalam blok FORALL di %L tidak PURE" #: fortran/resolve.c:2396 #, no-c-format msgid "Subroutine call to '%s' at %L is not PURE" -msgstr "" +msgstr "Panggilan subroutine ke '%s' di %L bukan PURE" #: fortran/resolve.c:2459 #, no-c-format msgid "There is no specific subroutine for the generic '%s' at %L" -msgstr "" +msgstr "Disana tidak ada subroutine spesifik untuk umum '%s' di %L" #: fortran/resolve.c:2468 #, no-c-format msgid "Generic subroutine '%s' at %L is not consistent with an intrinsic subroutine interface" -msgstr "" +msgstr "Subroutine umum '%s' di %L tidak konsisten dengan sebuah anta-muka subroutine intrinsik" #: fortran/resolve.c:2576 #, no-c-format msgid "Missing SHAPE parameter for call to %s at %L" -msgstr "" +msgstr "Hilang parameter SHAPE untuk panggilan ke %s di %L" #: fortran/resolve.c:2584 #, no-c-format msgid "SHAPE parameter for call to %s at %L must be a rank 1 INTEGER array" -msgstr "" +msgstr "Parameter SHAPE untuk panggilan ke %s di %L harus berupa tingkat 1 INTEGER array" #: fortran/resolve.c:2667 #, no-c-format msgid "Subroutine '%s' at %L is INTRINSIC but is not compatible with an intrinsic" -msgstr "" +msgstr "Subroutine '%s' di %L adalah INTRINSIK tetapi tidak kompatibel dengan sebuah intrinsik" #: fortran/resolve.c:2711 #, no-c-format msgid "Unable to resolve the specific subroutine '%s' at %L" -msgstr "" +msgstr "Tidak dapat meresolf subroutine spesifik '%s' di %L" #: fortran/resolve.c:2768 #, no-c-format msgid "'%s' at %L has a type, which is not consistent with the CALL at %L" -msgstr "" +msgstr "'%s' di %L memiliki sebuah tipe, yang tidak konsisten dengan CALL di %L" #: fortran/resolve.c:2787 #, no-c-format msgid "SUBROUTINE '%s' at %L cannot call itself, as it is not RECURSIVE" -msgstr "" +msgstr "SUBROUTINE '%s' di %L tidak dapat memanggil dirinya sendiri, karena ini bukan REKURSIF" #: fortran/resolve.c:2795 #, no-c-format msgid "Call to ENTRY '%s' at %L is recursive, but subroutine '%s' is not declared as RECURSIVE" -msgstr "" +msgstr "Panggilan ke MASUKAN '%s' di %L adalah rekursif, tetapi subroutine '%s' tidak dideklarasikan sebagai REKURSIF" #: fortran/resolve.c:2865 #, no-c-format msgid "Shapes for operands at %L and %L are not conformable" -msgstr "" +msgstr "Bentuk untuk operan di %L dan %L tidak konformant" #: fortran/resolve.c:2916 #, c-format msgid "Invalid context for NULL() pointer at %%L" -msgstr "" +msgstr "Konteks tidak valid untuk penunjuk NULL() di %%L" #: fortran/resolve.c:2932 #, c-format msgid "Operand of unary numeric operator '%s' at %%L is %s" -msgstr "" +msgstr "Operan dari operator numerik unary '%s' di %%L adalah %s" #: fortran/resolve.c:2948 #, c-format msgid "Operands of binary numeric operator '%s' at %%L are %s/%s" -msgstr "" +msgstr "Operan dari operan binari numerik '%s' di %%L adalah %s/%s" #: fortran/resolve.c:2962 #, c-format msgid "Operands of string concatenation operator at %%L are %s/%s" -msgstr "" +msgstr "Operan dari string operator konkatenasi di %%L adalah %s/%s" #: fortran/resolve.c:2981 #, c-format msgid "Operands of logical operator '%s' at %%L are %s/%s" -msgstr "" +msgstr "Operan dari operator logikal '%s' di %%L adalah %s/%s" #: fortran/resolve.c:2995 #, c-format msgid "Operand of .not. operator at %%L is %s" -msgstr "" +msgstr "Operan dari operator .not. di %%L adalah %s" #: fortran/resolve.c:3009 msgid "COMPLEX quantities cannot be compared at %L" diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 85e97f3277c..06893ecd5b9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,12 +1,114 @@ +2008-11-03 Richard Guenther <rguenther@suse.de> + Jakub Jelinek <jakub@redhat.com> + + PR middle-end/37573 + * gcc.c-torture/execute/pr37573.c: New testcase. + +2008-11-03 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/37858 + * gcc.dg/pr37858.c: New test. + +2008-11-03 Tobias Burnus <burnus@net-b.de> + + PR fortran/37821 + * gfortran.dg/include_4.f90: New. + * gfortran.dg/include_5.f90: New. + * gfortran.dg/include_4.inc: New. + +2008-11-03 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/37445 + * gfortran.dg/host_assoc_call_3.f90: New test. + * gfortran.dg/host_assoc_call_4.f90: New test. + * gfortran.dg/host_assoc_function_4.f90: New test. + +2008-11-02 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/37542 + * gcc.dg/tree-ssa/ssa-pre-22.c: New testcase. + * gcc.c-torture/compile/20081101-1.c: Likewise. + +2008-11-02 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/37991 + * gcc.c-torture/compile/pr37991.c: New testcase. + +2008-11-01 Hans-Peter Nilsson <hp@axis.com> + + PR target/37939 + * gcc.target/cris/biap.c: New test. + +2008-11-01 Janus Weil <janus@gcc.gnu.org> + + PR fortran/36426 + * gfortran.dg/proc_decl_19.f90: New. + +2008-11-01 Steven G. Kargl <kargls@comcast.net> + + PR fortran/19925 + * gfortran.dg/initialization_20.f90: New test. + * gfortran.dg/initialization_21.f90: Ditto. + +2008-11-01 Daniel Kraft <d@domob.eu> + + PR fortran/35681 + * gfortran.dg/mvbits_4.f90: New test. + +2008-11-01 Janus Weil <janus@gcc.gnu.org> + + PR fortran/36322 + PR fortran/36463 + * gfortran.dg/proc_decl_17.f90: New. + * gfortran.dg/proc_decl_18.f90: New. + +2008-11-01 Richard Guenther <rguenther@suse.de> + + PR middle-end/37976 + * gcc.c-torture/compile/pr37976.c: New testcase. + +2008-11-01 Dennis Wassel <dennis.wassel@gmail.com> + + PR fortran/37159 + * gfortran.dg/random_seed_1.f90: New testcase. + +2008-10-31 Manuel López-Ibáñez <manu@gcc.gnu.org> + + * gcc.dg/cpp/Wsignprom.c: Add column numbers. + * gcc.dg/cpp/if-mpar.c: Likewise. + +2008-10-31 Jakub Jelinek <jakub@redhat.com> + + PR c++/37967 + * g++.dg/cpp0x/auto8.C: New test. + + PR c++/37965 + * g++.dg/cpp0x/auto7.C: New test. + +2008-10-31 Mikael Morin <mikael.morin@tele2.fr> + + PR fortran/35840 + * gfortran.dg/write_check4.f90: New test. + +2008-10-31 Mikael Morin <mikael.morin@tele2.fr> + + PR fortran/35820 + * gfortran.dg/nested_forall_1.f: New test. + +2008-10-30 Steven G. Kargl <kargls@comcast.net> + + PR fortran/37930 + * gfortran.dg/int_conv_2.f90: New test. + 2008-10-30 Mikael Morin <mikael.morin@tele2.fr> - PR fortran/37903 - * gfortran.dg/vector_subscript_4.f90: New test. + PR fortran/37903 + * gfortran.dg/vector_subscript_4.f90: New test. 2008-10-30 Mikael Morin <mikael.morin@tele2.fr> - PR fortran/37749 - * gfortran.dg/vector_subscript__5.f90: New test. + PR fortran/37749 + * gfortran.dg/vector_subscript__5.f90: New test. 2008-10-30 Jakub Jelinek <jakub@redhat.com> @@ -27,7 +129,7 @@ 2008-10-29 Steve Ellcey <sje@cup.hp.com> PR middle-end/37339 - * gcc.dg/pr33545-3.c: Remove. + * gcc.dg/pr33645-3.c: Remove. 2008-10-29 Manuel Lopez-Ibanez <manu@gcc.gnu.org> @@ -184,7 +286,7 @@ * gcc.dg/tree-ssa/alias-19.c: New testcase. 2008-10-20 Manuel López-Ibáñez <manu@gcc.gnu.org> - + PR 12603 * gcc.dg/pr12603.c: New testcase. @@ -200,13 +302,13 @@ 2008-10-19 Paul Thomas <pault@gcc.gnu.org> - PR fortran/37723 - * gfortran.dg/dependency_22.f90: New test. + PR fortran/37723 + * gfortran.dg/dependency_22.f90: New test. 2008-10-18 Danny Smith <dannysmith@users.sourceforge.net> * gcc.dg/dll-2.c: Revert 2008-08-09 change (R138893): Change - "dg-message" back to "dg-warning". + "dg-message" back to "dg-warning". * gcc.dg/dll-3.c: Likewise. 2008-10-16 Alexander Monakov <amonakov@ispras.ru> @@ -606,7 +708,7 @@ to avoid pointer truncation warning. 2008-09-26 Dorit Nuzman <dorit@il.ibm.com> - + PR tree-optimization/37574 * gcc.dg/vect/ggc-pr37574.c: New test. * gcc.dg/vect/vect.exp: Compile some tests with ggc flags. @@ -719,7 +821,7 @@ PR rtl-optimization/33642 * gcc.c-torture/compile/pr11832.c: Extend XFAIL to powerpc*-*-*. * gcc.c-torture/compile/pr33009.c: Likewise. - + 2008-09-22 Richard Guenther <rguenther@suse.de> PR tree-optimization/37145 @@ -752,7 +854,7 @@ PR rtl-optimization/33642 * gcc.c-torture/compile/pr11832.c: XFAIL on sh*-*-*. * gcc.c-torture/compile/pr33009.c: Likewise. - + 2008-09-21 Paul Thomas <pault@gcc.gnu.org> PR fortran/37583 @@ -791,10 +893,10 @@ * gcc.dg/tree-ssa/vector-3.c: New test. 2008-09-18 Bob Wilson <bob.wilson@acm.org> - + * gcc.c-torture/compile/pr11832.c: xfail on xtensa*-*-*. * gcc.c-torture/compile/pr33009.c: Likewise. - + 2008-09-18 Janis Johnson <janis187@us.ibm.com> PR testsuite/25241 @@ -1717,7 +1819,7 @@ PR c++/37342 * g++.dg/other/canon-37342.C: New. - + 2008-09-05 Joseph Myers <joseph@codesourcery.com> * gcc.c-torture/compile/20080903-1.c: New test. @@ -1893,7 +1995,7 @@ * gfortran.dg/graphite/scop-{1,2}.f: New. * gfortran.dg/graphite/block-{1,3,4}.f90: New. * gfortran.dg/graphite/graphite.exp: New. - + 2008-09-02 Richard Guenther <rguenther@suse.de> PR tree-optimization/37327 @@ -2886,7 +2988,7 @@ * gcc.dg/assign-warn-1.c: Update. * gcc.dg/dfp/composite-type.c: Update. * gcc.dg/noncompile/20020213-1.c: Update. - + 2008-08-28 Daniel Kraft <d@domob.eu> * gfortran.dg/typebound_call_1.f03: New test. @@ -3278,7 +3380,7 @@ (check_effective_target_vect_long_long): Remove spu-*-*. * gcc.dg/vect/vect-multitypes-16.c: Make init loop unvectorizable. * gcc.dg/vect/slp-widen-mult-u8.c: Likewise. - + 2008-08-20 Richard Guenther <rguenther@suse.de> * gcc.dg/tree-ssa/pr20701.c: Scan vrp1 dump. @@ -3465,7 +3567,7 @@ * gcc.dg/pr30551.c: Likewise. * g++.dg/warn/pr30551-2.C: Likewise. * g++.dg/warn/pr30551.C: Likewise. - + 2008-08-14 Janus Weil <janus@gcc.gnu.org> PR fortran/36705 @@ -3578,7 +3680,7 @@ * g++.dg/warn/pr35635.C: New. * g++.dg/warn/Wconversion-integer.C: Update. * g++.dg/warn/Wsign-conversion.C: Update. - + 2008-08-13 Richard Guenther <rguenther@suse.de> PR tree-optimization/15255 @@ -3605,7 +3707,7 @@ 2008-08-12 Paolo Carlini <paolo.carlini@oracle.com> * g++.old-deja/g++.other/decl5.C: Expand new expected errors. - + 2008-08-12 Paolo Carlini <paolo.carlini@oracle.com> PR c++/37087 @@ -3712,7 +3814,7 @@ PR c++/12242 * g++.dg/warn/pr12242.C: New. - + 2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org> PR 36901 @@ -3768,13 +3870,13 @@ * gcc.dg/redecl-5.c: Update. * gcc.dg/qual-return-3.c: Update. * gcc.dg/label-decl-4.c: Update. - + 2008-08-09 Manuel Lopez-Ibanez <manu@gcc.gnu.org> PR 7651 * g++.dg/warn/Wuninitializable-member.C: New. * g++.dg/warn/Wuninitializable-member-no.C: New. - + 2008-08-08 Manuel Lopez-Ibanez <manu@gcc.gnu.org> PR 28875 @@ -3846,7 +3948,7 @@ PR 26785 * g++.dg/warn/pr26785.C: New. - + 2008-08-06 Victor Kaplansky <victork@il.ibm.com> * gcc.dg/vect/costmodel/ppc/costmodel-slp-34.c: New test. @@ -3856,7 +3958,7 @@ PR 8715 * gcc.dg/pr8715.c: New. * g++.dg/warn/pr8715.C: New. - + 2008-08-06 Marc Gauthier <marc@tensilica.com> * lib/target-supports.exp (check_profiling_available): Match more @@ -4012,7 +4114,7 @@ * gnat.dg/raise_from_pure.ad[bs], * gnat.dg/wrap_raise_from_pure.ad[bs]: Support for ... * gnat.dg/test_raise_from_pure.adb: New test. - + 2008-07-31 Adam Nemet <anemet@caviumnetworks.com> * gcc.target/mips/ext-1.c: New test. @@ -4229,7 +4331,7 @@ PR 34389 * gcc.dg/Wconversion-pr34389.c: New. * g++.dg/warn/Wconversion-pr34389.C: New. - + 2008-07-29 Steve Ellcey <sje@cup.hp.com> * gcc.dg/pr32370.c: Force 64 bits on IA64. @@ -4266,7 +4368,7 @@ PR 34985 * gcc.dg/pr34985.c: New. * g++.dg/warn/pr34985.C: New. - + 2008-07-29 Daniel Kraft <d@domob.eu> PR fortran/36403 @@ -4386,7 +4488,7 @@ PR 35058 * gcc.dg/Wdeclaration-after-statement-3.c: New. * gcc/testsuite/gcc.dg/Wpointer-arith.c: New. - + 2008-07-22 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/36852 @@ -4410,7 +4512,7 @@ PR 28079 * gcc.dg/cpp/line6.c: New. - + 2008-07-21 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> * gfortran.dg/fmt_g0_3.f08: Fix typo in expected error message. diff --git a/gcc/testsuite/g++.dg/cpp0x/auto7.C b/gcc/testsuite/g++.dg/cpp0x/auto7.C new file mode 100644 index 00000000000..9ef5a80eb1d --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/auto7.C @@ -0,0 +1,13 @@ +// PR c++/37965 +// Negative test for auto +// { dg-options "-std=c++0x" } + +auto i = 6; +auto j; // { dg-error "has no initializer" } + +template<int> struct A +{ + static auto k = 7; + static auto l; // { dg-error "has no initializer" } + auto m; // { dg-error "has no initializer" } +}; diff --git a/gcc/testsuite/g++.dg/cpp0x/auto8.C b/gcc/testsuite/g++.dg/cpp0x/auto8.C new file mode 100644 index 00000000000..d724d79f0d7 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/auto8.C @@ -0,0 +1,16 @@ +// PR c++/37967 +// Negative test for auto +// { dg-options "-std=c++0x" } + +auto f1 () -> int; +auto f2 (); // { dg-error "without late return type" } +int f3 () -> int; // { dg-error "with auto type specifier" } +auto *f4 () -> int; // { dg-error "not using auto" } + +struct A +{ + auto f5 () const -> int; + auto f6 (); // { dg-error "without late return type" } + int f7 () -> int; // { dg-error "with auto type specifier" } + auto *f8 () -> int; // { dg-error "not using auto" } +}; diff --git a/gcc/testsuite/gcc.c-torture/compile/20081101-1.c b/gcc/testsuite/gcc.c-torture/compile/20081101-1.c new file mode 100644 index 00000000000..0e484d0624f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20081101-1.c @@ -0,0 +1,12 @@ +int foo (int i, int b) +{ + int mask; + int result; + if (b) + mask = -1; + else + mask = 0; + result = i + 1; + result = result & mask; + return result; +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37976.c b/gcc/testsuite/gcc.c-torture/compile/pr37976.c new file mode 100644 index 00000000000..6b2ba63c0f2 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr37976.c @@ -0,0 +1,6 @@ +void percent_x(int ch, char *p, char* ok_chars) +{ + char *cp = ch == 'a' ? p : ""; + for (;*(cp += __builtin_strspn (cp, ok_chars));) + ; +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37991.c b/gcc/testsuite/gcc.c-torture/compile/pr37991.c new file mode 100644 index 00000000000..f374ea98540 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr37991.c @@ -0,0 +1,14 @@ +typedef int Int32; +void use_it(int); +void FindAndReadSignature(int processedSize) +{ + int numPrevBytes = 1; + for (;;) + { + int numBytesInBuffer = numPrevBytes + processedSize; + Int32 numTests = numBytesInBuffer - 1; + use_it (numTests); + numPrevBytes = numBytesInBuffer - numTests; + } +} + diff --git a/gcc/testsuite/gcc.c-torture/execute/pr37573.c b/gcc/testsuite/gcc.c-torture/execute/pr37573.c new file mode 100644 index 00000000000..589191035b9 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr37573.c @@ -0,0 +1,65 @@ +/* PR tree-optimization/37573 */ + +struct S +{ + unsigned int *a; + unsigned int b; + unsigned int c[624]; +}; + +static unsigned char __attribute__((noinline)) +foo (struct S *s) +{ + unsigned int r; + if (!--s->b) + { + unsigned int *c = s->c; + unsigned int i; + s->a = c; + for (i = 0; i < 227; i++) + c[i] = ((((c[i] ^ c[i + 1]) & 0x7ffffffe) ^ c[i]) >> 1) + ^ ((0 - (c[i + 1] & 1)) & 0x9908b0df) ^ c[i + 397]; + } + r = *(s->a++); + r ^= (r >> 11); + r ^= ((r & 0xff3a58ad) << 7); + r ^= ((r & 0xffffdf8c) << 15); + r ^= (r >> 18); + return (unsigned char) (r >> 1); +} + +static void __attribute__((noinline)) +bar (unsigned char *p, unsigned int q, unsigned int r) +{ + struct S s; + unsigned int i; + unsigned int *c = s.c; + *c = r; + for (i = 1; i < 624; i++) + c[i] = i + 0x6c078965 * ((c[i - 1] >> 30) ^ c[i - 1]); + s.b = 1; + while (q--) + *p++ ^= foo (&s); +}; + +static unsigned char p[23] = { + 0xc0, 0x49, 0x17, 0x32, 0x62, 0x1e, 0x2e, 0xd5, 0x4c, 0x19, 0x28, 0x49, + 0x91, 0xe4, 0x72, 0x83, 0x91, 0x3d, 0x93, 0x83, 0xb3, 0x61, 0x38 +}; + +static unsigned char q[23] = { + 0x3e, 0x41, 0x55, 0x54, 0x4f, 0x49, 0x54, 0x20, 0x55, 0x4e, 0x49, 0x43, + 0x4f, 0x44, 0x45, 0x20, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x3c +}; + +int +main (void) +{ + unsigned int s; + s = 23; + bar (p, s, s + 0xa25e); + if (__builtin_memcmp (p, q, s) != 0) + __builtin_abort (); + return 0; +} + diff --git a/gcc/testsuite/gcc.dg/cpp/Wsignprom.c b/gcc/testsuite/gcc.dg/cpp/Wsignprom.c index 44b5667b3f2..7cdbccb3cac 100644 --- a/gcc/testsuite/gcc.dg/cpp/Wsignprom.c +++ b/gcc/testsuite/gcc.dg/cpp/Wsignprom.c @@ -1,26 +1,26 @@ /* { dg-do preprocess } */ -/* { dg-options "-Wall" } */ +/* { dg-options "-Wall -fshow-column" } */ /* Test that -Wall emits the warnings about integer promotion changing the sign of an operand. */ -#if -1 > 0U /* { dg-warning "changes sign when promoted" } */ +#if -1 > 0U /* { dg-warning "5:changes sign when promoted" } */ #endif -#if 0U + -1 /* { dg-warning "changes sign when promoted" } */ +#if 0U + -1 /* { dg-warning "10:changes sign when promoted" } */ #endif -#if 0U * -1 /* { dg-warning "changes sign when promoted" } */ +#if 0U * -1 /* { dg-warning "10:changes sign when promoted" } */ #endif -#if 1U / -2 /* { dg-warning "changes sign when promoted" } */ +#if 1U / -2 /* { dg-warning "10:changes sign when promoted" } */ #endif -#if -1 % 1U /* { dg-warning "changes sign when promoted" } */ +#if -1 % 1U /* { dg-warning "5:changes sign when promoted" } */ #endif -#if 1 ? 0U : -1 /* { dg-warning "changes sign when promoted" } */ +#if 1 ? 0U : -1 /* { dg-warning "14:changes sign when promoted" } */ #endif -#if 1 ? -1 : 0U /* { dg-warning "changes sign when promoted" } */ +#if 1 ? -1 : 0U /* { dg-warning "9:changes sign when promoted" } */ #endif diff --git a/gcc/testsuite/gcc.dg/cpp/if-mpar.c b/gcc/testsuite/gcc.dg/cpp/if-mpar.c index df200bbbab4..633cefcb442 100644 --- a/gcc/testsuite/gcc.dg/cpp/if-mpar.c +++ b/gcc/testsuite/gcc.dg/cpp/if-mpar.c @@ -4,21 +4,27 @@ missing parenthesis message. */ /* { dg-do preprocess } */ +/* { dg-options "-fshow-column" } */ +#if (1 /* { dg-error "5:missing '\\)'" "missing ')' no. 1" } */ +#endif + +#if 2 * (3 + 4 /* { dg-error "9:missing '\\)'" "missing ')' no. 2" } */ +#endif -#if (1 /* { dg-error "missing '\\)'" "missing ')' no. 1" } */ +#if (2)) /* { dg-error "8:missing '\\('" "missing '(' no. 1" } */ #endif -#if 2 * (3 + 4 /* { dg-error "missing '\\)'" "missing ')' no. 2" } */ +#if ) /* { dg-error "5:missing '\\('" "missing '(' no. 2" } */ #endif -#if (2)) /* { dg-error "missing '\\('" "missing '(' no. 1" } */ +#if 4) /* { dg-error "6:missing '\\('" "missing '(' no. 3" } */ #endif -#if ) /* { dg-error "missing '\\('" "missing '(' no. 2" } */ +#if ( /* { dg-error "5:missing '\\)'" "missing ')' no. 3" } */ #endif -#if 4) /* { dg-error "missing '\\('" "missing '(' no. 3" } */ +#if ((2 + 3) + 5 /* { dg-error "5:missing '\\)'" "missing ')' no. 3" } */ #endif -#if ( /* { dg-error "missing '\\)'" "missing ')' no. 3" } */ +#if ((2 + 3 + 5 /* { dg-error "6:missing '\\)'" "missing ')' no. 3" } */ #endif diff --git a/gcc/testsuite/gcc.dg/graphite/pr37684.c b/gcc/testsuite/gcc.dg/graphite/pr37684.c new file mode 100644 index 00000000000..35c32911c30 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr37684.c @@ -0,0 +1,65 @@ +/* { dg-options "-O2 -floop-block -fdump-tree-graphite-all" } */ + +typedef struct _IO_FILE FILE; +struct _IO_marker { +}; +enum __codecvt_result +{ + __codecvt_noconv +}; +struct _IO_FILE { +}; +extern struct _IO_FILE *stderr; + +typedef + struct { + unsigned int avail_in; + unsigned int avail_out; + void *state; + void *(*bzalloc)(void *,int,int); + void *opaque; + } + bz_stream; +extern int BZ2_bzCompressInit ( + bz_stream* strm, + int blockSize100k, + int verbosity, + int workFactor + ); +typedef unsigned char Bool; +typedef int Int32; +typedef unsigned int UInt32; + +typedef + struct { + Int32 mode; + Int32 state; + UInt32* arr1; + UInt32* arr2; + UInt32* ftab; + Int32 nblock; + Int32 nblockMAX; + Bool inUse[256]; + Int32 blockNo; + } + EState; + +void prepare_new_block ( EState* s ) +{ + Int32 i; + for (i = 0; i < 256; i++) s->inUse[i] = ((Bool)0); + s->blockNo++; +} + +int BZ2_bzCompressInit + ( bz_stream* strm, + int blockSize100k, + int verbosity, + int workFactor ) +{ + EState* s; + s = (strm->bzalloc)(strm->opaque,(sizeof(EState)),1); + if (s->arr1 == ((void *)0) || s->arr2 == ((void *)0) || s->ftab == ((void *)0)) { + } + prepare_new_block ( s ); +} diff --git a/gcc/testsuite/gcc.dg/pr37858.c b/gcc/testsuite/gcc.dg/pr37858.c new file mode 100644 index 00000000000..4a827eebd12 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr37858.c @@ -0,0 +1,11 @@ +/* PR middle-end/37858 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-ipa-early_local_cleanups -dv" } */ + +int +main (void) +{ + return 0; +} + +/* { dg-final { cleanup-ipa-dump "early_local_cleanups" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr36908.c b/gcc/testsuite/gcc.dg/tree-ssa/pr36908.c new file mode 100644 index 00000000000..a135bcff238 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr36908.c @@ -0,0 +1,65 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -ftree-loop-distribution" } */ +#define NULL ((void *)0) + +typedef unsigned int size_t; +extern void *foo(size_t nelem, size_t elsize); +extern void bar (char*, ...); + +typedef struct alt_state *alt_state_t; +typedef struct state *state_t; + +struct alt_state +{ + alt_state_t next_alt_state; +}; + +static alt_state_t first_free_alt_state = NULL; + +static void +free_alt_state (alt_state_t alt_state) +{ + if (alt_state == NULL) + return; + alt_state->next_alt_state = first_free_alt_state; + first_free_alt_state = alt_state; +} + +/* The function frees list started with node ALT_STATE_LIST. */ +static void +free_alt_states (alt_state_t alt_states_list) +{ + alt_state_t curr_alt_state; + alt_state_t next_alt_state; + + for (curr_alt_state = alt_states_list; + curr_alt_state != NULL; + curr_alt_state = next_alt_state) + { + next_alt_state = curr_alt_state->next_alt_state; + free_alt_state (curr_alt_state); + } +} + +int +main (void) +{ + int i; + alt_state_t state, act_state; + + act_state = state = foo (1, sizeof (struct alt_state)); + for (i = 0; i < 2; i ++) + { + act_state->next_alt_state = foo (1, sizeof (struct alt_state)); + act_state = act_state->next_alt_state; + } + + free_alt_states (state); + + for (act_state = first_free_alt_state; + act_state != NULL; + act_state = act_state->next_alt_state) + bar ("going from %p to %p\n", act_state, act_state->next_alt_state); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-22.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-22.c new file mode 100644 index 00000000000..3a1697e6c76 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-22.c @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-pre-stats" } */ + +int foo (int i, int b) +{ + int j = 1; + if (b) + j = i; + return j - i; +} + +/* { dg-final { scan-tree-dump "Eliminated: 1" "pre" } } */ +/* { dg-final { cleanup-tree-dump "pre" } } */ diff --git a/gcc/testsuite/gcc.target/cris/biap.c b/gcc/testsuite/gcc.target/cris/biap.c new file mode 100644 index 00000000000..1f3b4368a36 --- /dev/null +++ b/gcc/testsuite/gcc.target/cris/biap.c @@ -0,0 +1,11 @@ +/* Make sure ADDI is combined and emitted successfully. + See also PR37939. */ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +/* { dg-final { scan-assembler "addi" } } */ +/* { dg-final { scan-assembler-not "lsl" } } */ + +int xyzzy (int r10, int r11) +{ + return r11 * 4 + r10; +} diff --git a/gcc/testsuite/gfortran.dg/host_assoc_call_3.f90 b/gcc/testsuite/gfortran.dg/host_assoc_call_3.f90 new file mode 100644 index 00000000000..6646270e5ac --- /dev/null +++ b/gcc/testsuite/gfortran.dg/host_assoc_call_3.f90 @@ -0,0 +1,44 @@ +! { dg-do compile } +! +! PR fortran/37445, in which the contained 'putaline' would be +! ignored and no specific interface found in the generic version. +! +! Contributed by Norman S Clerman < clerman@fuse.net> +! +MODULE M1 + INTERFACE putaline + MODULE PROCEDURE S1,S2 + END INTERFACE +CONTAINS + SUBROUTINE S1(I) + END SUBROUTINE + SUBROUTINE S2(F) + END SUBROUTINE +END MODULE + +MODULE M2 + USE M1 +CONTAINS + SUBROUTINE S3 + integer :: check = 0 + CALL putaline() + if (check .ne. 1) call abort + CALL putaline("xx") + if (check .ne. 2) call abort +! CALL putaline(1.0) ! => this now causes an error, as it should + CONTAINS + SUBROUTINE putaline(x) + character, optional :: x + if (present(x)) then + check = 2 + else + check = 1 + end if + END SUBROUTINE + END SUBROUTINE +END MODULE + + USE M2 + CALL S3 +END +! { dg-final { cleanup-modules "M1 M2" } } diff --git a/gcc/testsuite/gfortran.dg/host_assoc_call_4.f90 b/gcc/testsuite/gfortran.dg/host_assoc_call_4.f90 new file mode 100644 index 00000000000..f97a644e688 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/host_assoc_call_4.f90 @@ -0,0 +1,48 @@ +! { dg-do compile } +! +! PR fortran/37445, in which the first version of the fix regressed on the +! calls to GetBasicElementData; picking up the local GetBasicElementData instead. +! +! Contributed by Norman S Clerman < clerman@fuse.net> +! and reduced by Tobias Burnus <burnus@gcc.gnu.org> +! +MODULE ErrElmnt + IMPLICIT NONE + TYPE :: TErrorElement + integer :: i + end type TErrorElement +contains + subroutine GetBasicData ( AnElement, ProcedureName, ErrorNumber, & + Level, Message, ReturnStat) + type (TErrorElement) :: AnElement + character (*, 1), optional :: & + ProcedureName + integer (4), optional :: ErrorNumber + character (*, 1), optional :: Level + character (*, 1), optional :: Message + integer (4), optional :: ReturnStat + end subroutine GetBasicData +end module ErrElmnt + +MODULE ErrorMod + USE ErrElmnt, only: GetBasicElementData => GetBasicData , TErrorElement + IMPLICIT NONE +contains + subroutine GetBasicData () + integer (4) :: CallingStat, LocalErrorNum + character (20, 1) :: LocalErrorMessage + character (20, 1) :: LocalProcName + character (20, 1) :: Locallevel + type (TErrorElement) :: AnElement + call GetBasicElementData (AnElement, LocalProcName, LocalErrorNum, LocalLevel, LocalErrorMessage, CallingStat) + end subroutine GetBasicData + SUBROUTINE WH_ERR () + integer (4) :: ErrorNumber, CallingStat + character (20, 1) :: ProcedureName + character (20, 1) :: ErrorLevel + character (20, 1) :: ErrorMessage + type (TErrorElement) :: TargetElement + call GetBasicElementData (TargetElement, ProcedureName, ErrorNumber, ErrorLevel, ErrorMessage, CallingStat) + end subroutine WH_ERR +end module ErrorMod +! { dg-final { cleanup-modules "ErrElmnt ErrorMod" } } diff --git a/gcc/testsuite/gfortran.dg/host_assoc_function_4.f90 b/gcc/testsuite/gfortran.dg/host_assoc_function_4.f90 new file mode 100644 index 00000000000..799eb007870 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/host_assoc_function_4.f90 @@ -0,0 +1,30 @@ +! { dg-do run } +! +! PR fortran/37445, in which the contained 's1' would be +! ignored and the use+host associated version used. +! +! Contributed by Norman S Clerman < clerman@fuse.net> +! +MODULE M1 +CONTAINS + integer function S1 () + s1 = 0 + END function +END MODULE + +MODULE M2 + USE M1 +CONTAINS + SUBROUTINE S2 + if (s1 () .ne. 1) call abort + CONTAINS + integer function S1 () + s1 = 1 + END function + END SUBROUTINE +END MODULE + + USE M2 + CALL S2 +END +! { dg-final { cleanup-modules "M1 M2" } } diff --git a/gcc/testsuite/gfortran.dg/include_4.f90 b/gcc/testsuite/gfortran.dg/include_4.f90 new file mode 100644 index 00000000000..cf1efb159ad --- /dev/null +++ b/gcc/testsuite/gfortran.dg/include_4.f90 @@ -0,0 +1,12 @@ +! { dg-do compile } +! +! PR fortran/37821 +! +! Ensure that for #include "..." and for include the +! current directory/directory of the source file is +! included. See also include_5.f90 + +subroutine one() + include "include_4.inc" + integer(i4) :: i +end subroutine one diff --git a/gcc/testsuite/gfortran.dg/include_4.inc b/gcc/testsuite/gfortran.dg/include_4.inc new file mode 100644 index 00000000000..37b646774da --- /dev/null +++ b/gcc/testsuite/gfortran.dg/include_4.inc @@ -0,0 +1,4 @@ +! Used by include_4.f90 and include_5.f90 +! PR fortran/37821 +! +integer, parameter :: i4 = 4 diff --git a/gcc/testsuite/gfortran.dg/include_5.f90 b/gcc/testsuite/gfortran.dg/include_5.f90 new file mode 100644 index 00000000000..2bfd2bb09dd --- /dev/null +++ b/gcc/testsuite/gfortran.dg/include_5.f90 @@ -0,0 +1,18 @@ +! { dg-do compile } +! { dg-options "-cpp" } +! +! PR fortran/37821 +! +! Ensure that for #include "..." and for include the +! current directory/directory of the source file is +! included. + +subroutine one() + include "include_4.inc" + integer(i4) :: i +end subroutine one + +subroutine two() +# include "include_4.inc" + integer(i4) :: i +end subroutine two diff --git a/gcc/testsuite/gfortran.dg/initialization_20.f90 b/gcc/testsuite/gfortran.dg/initialization_20.f90 new file mode 100644 index 00000000000..47d552834ae --- /dev/null +++ b/gcc/testsuite/gfortran.dg/initialization_20.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! Test for PR19925 +! +program pr19925 + implicit none + integer j + integer, parameter :: n = 100000 + integer, parameter :: i(n)=(/(j,j=1,n)/) ! { dg-error "number of elements" } + print *, i(5) +end program pr19925 diff --git a/gcc/testsuite/gfortran.dg/initialization_21.f90 b/gcc/testsuite/gfortran.dg/initialization_21.f90 new file mode 100644 index 00000000000..d4344767982 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/initialization_21.f90 @@ -0,0 +1,11 @@ +! { dg-do compile } +! { dg-options "-fmax-array-constructor=100000" } +! Test for PR19925 +! +program pr19925 + implicit none + integer j + integer, parameter :: n = 100000 + integer, parameter :: i(n) = (/ (j, j=1, n) /) + print *, i(5) +end program pr19925 diff --git a/gcc/testsuite/gfortran.dg/int_conv_2.f90 b/gcc/testsuite/gfortran.dg/int_conv_2.f90 new file mode 100644 index 00000000000..ce5f5a21712 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/int_conv_2.f90 @@ -0,0 +1,7 @@ +! { dg-do compile } +! PR fortran/37930 +program test + implicit none + integer i + i = transfer(-1,1.0) ! { dg-error "Conversion" } +end program test diff --git a/gcc/testsuite/gfortran.dg/mvbits_4.f90 b/gcc/testsuite/gfortran.dg/mvbits_4.f90 new file mode 100644 index 00000000000..b8d32140c78 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/mvbits_4.f90 @@ -0,0 +1,33 @@ +! { dg-do run } + +! PR fortran/35681 +! Check that dependencies of MVBITS arguments are resolved correctly by using +! temporaries if both arguments refer to the same variable. + + integer, dimension(10) :: ila1 = (/1,2,3,4,5,6,7,8,9,10/) + integer, dimension(20) :: ila2 + integer, dimension(10), target :: ila3 + integer, pointer :: ila3_ptr(:) + integer, parameter :: SHOULD_BE(10) = (/17,18,11,4,13,22,7,16,9,18/) + integer, parameter :: INDEX_VECTOR(10) = (/9,9,6,2,4,9,2,9,6,10/) + + ila2(2:20:2) = ila1 + ila3 = ila1 + + ! Argument is already packed. + call mvbits (ila1(INDEX_VECTOR), 2, 4, ila1, 3) + write (*,'(10(I3))') ila1 + if (any (ila1 /= SHOULD_BE)) call abort () + + ! Argument is not packed. + call mvbits (ila2(2*INDEX_VECTOR), 2, 4, ila2(2:20:2), 3) + write (*,'(10(I3))') ila2(2:20:2) + if (any (ila2(2:20:2) /= SHOULD_BE)) call abort () + + ! Pointer and target + ila3_ptr => ila3 + call mvbits (ila3(INDEX_VECTOR), 2, 4, ila3_ptr, 3) + write (*,'(10(I3))') ila3 + if (any (ila3 /= SHOULD_BE)) call abort () + + end diff --git a/gcc/testsuite/gfortran.dg/nested_forall_1.f b/gcc/testsuite/gfortran.dg/nested_forall_1.f new file mode 100644 index 00000000000..6aa66ee97a7 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/nested_forall_1.f @@ -0,0 +1,38 @@ +! { dg-do compile } +! +! PR fortran/35820 +! +! Memory leak(s) while resolving forall constructs. +! +! Contributed by Dick Hendrickson <dick.hendrickson@gmail.com> + + MODULE TESTS + INTEGER,PARAMETER,PUBLIC :: I1_KV = KIND(1) + INTEGER,PARAMETER,PUBLIC :: R1_KV = KIND(1.0) + INTEGER, PRIVATE :: J1,J2 + INTEGER,PARAMETER,PUBLIC :: S1 = 10, S2 = 9 + CONTAINS + SUBROUTINE SA0136(RDA,IDA,BDA) + REAL(R1_KV) RDA(S1) + INTEGER(I1_KV) IDA(S1,S2) + INTEGER(I1_KV) ICA(S1,S2) + REAL(R1_KV) RCA(S1) +! T E S T S T A T E M E N T S + FORALL (J1 = 1:S1) + RDA(J1) = RCA(J1) + 1.0_R1_KV + FORALL (J2 = 1:S2) + IDA(J1,J2) = ICA(J1,J2) + 1 + END FORALL + FORALL (J2 = 1:S2) + IDA(J1,J2) = ICA(J1,J2) + END FORALL + ENDFORALL + FORALL (J1 = 1:S1) + RDA(J1) = RCA(J1) + FORALL (J2 = 1:S2) + IDA(J1,J2) = ICA(J1,J2) + END FORALL + END FORALL + END SUBROUTINE + END MODULE TESTS +! { dg-final { cleanup-modules "tests" } } diff --git a/gcc/testsuite/gfortran.dg/proc_decl_17.f90 b/gcc/testsuite/gfortran.dg/proc_decl_17.f90 new file mode 100644 index 00000000000..858022a43fa --- /dev/null +++ b/gcc/testsuite/gfortran.dg/proc_decl_17.f90 @@ -0,0 +1,68 @@ +! { dg-do run } +! +! PR 36322/36463 +! +! Original code by James Van Buskirk. +! Modified by Janus Weil <janus@gcc.gnu.org> + +module m + + use ISO_C_BINDING + + character, allocatable, save :: my_message(:) + + abstract interface + function abs_fun(x) + use ISO_C_BINDING + import my_message + integer(C_INT) x(:) + character(size(my_message),C_CHAR) abs_fun(size(x)) + end function abs_fun + end interface + +contains + + function foo(y) + implicit none + integer(C_INT) :: y(:) + character(size(my_message),C_CHAR) :: foo(size(y)) + integer i,j + do i=1,size(y) + do j=1,size(my_message) + foo(i)(j:j) = achar(iachar(my_message(j))+y(i)) + end do + end do + end function + + subroutine check(p,a) + integer a(:) + procedure(abs_fun) :: p + character(size(my_message),C_CHAR) :: c(size(a)) + integer k,l,m + c = p(a) + m=iachar('a') + do k=1,size(a) + do l=1,size(my_message) + if (c(k)(l:l) /= achar(m)) call abort() + m = m + 1 + end do + end do + end subroutine + +end module + +program prog + +use m + +integer :: i(4) = (/0,6,12,18/) + +allocate(my_message(1:6)) + +my_message = (/'a','b','c','d','e','f'/) + +call check(foo,i) + +end program + +! { dg-final { cleanup-modules "m" } } diff --git a/gcc/testsuite/gfortran.dg/proc_decl_18.f90 b/gcc/testsuite/gfortran.dg/proc_decl_18.f90 new file mode 100644 index 00000000000..46493eb9e0f --- /dev/null +++ b/gcc/testsuite/gfortran.dg/proc_decl_18.f90 @@ -0,0 +1,63 @@ +! { dg-do run } +! +! PR 36322/36463 +! +! Contributed by Janus Weil <janus@gcc.gnu.org> + +module m + +contains + + pure integer function mysize(a) + integer,intent(in) :: a(:) + mysize = size(a) + end function + +end module + + +program prog + +use m +implicit none + +abstract interface + function abs_fun(x,sz) + integer :: x(:) + interface + pure integer function sz(b) + integer,intent(in) :: b(:) + end function + end interface + integer :: abs_fun(sz(x)) + end function +end interface + +procedure(abs_fun) :: p + +integer :: k,j(3),i(3) = (/1,2,3/) + +j = p(i,mysize) + +do k=1,mysize(i) + if (j(k) /= 2*i(k)) call abort() +end do + +end + + function p(y,asz) + implicit none + integer,intent(in) :: y(:) + interface + pure integer function asz(c) + integer,intent(in) :: c(:) + end function + end interface + integer :: p(asz(y)) + integer l + do l=1,asz(y) + p(l) = y(l)*2 + end do + end function + +! { dg-final { cleanup-modules "m" } } diff --git a/gcc/testsuite/gfortran.dg/proc_decl_19.f90 b/gcc/testsuite/gfortran.dg/proc_decl_19.f90 new file mode 100644 index 00000000000..1e85a7dbaef --- /dev/null +++ b/gcc/testsuite/gfortran.dg/proc_decl_19.f90 @@ -0,0 +1,23 @@ +! { dg-do compile } +! +! PR 36426 +! +! Contributed by Tobias Burnus <burnus@gcc.gnu.org> + +abstract interface + function foo(x) + character(len=*) :: x + character(len=len(x)) :: foo + end function foo +end interface +procedure(foo) :: bar + +abstract interface + character function abs_fun() + end function +end interface +procedure(abs_fun):: x + +character(len=20) :: str +str = bar("Hello") +end diff --git a/gcc/testsuite/gfortran.dg/random_seed_1.f90 b/gcc/testsuite/gfortran.dg/random_seed_1.f90 new file mode 100644 index 00000000000..510badf7d68 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/random_seed_1.f90 @@ -0,0 +1,14 @@ +! { dg-do compile } + +! Emit a diagnostic for too small PUT array at compile time +! See PR fortran/37159 + +! Possible improvement: +! Provide a separate testcase for systems that support REAL(16), +! to test the minimum size of 12 (instead of 8). + +PROGRAM random_seed_1 + IMPLICIT NONE + INTEGER :: small(7) + CALL RANDOM_SEED(PUT=small) ! { dg-error "is too small" } +END PROGRAM random_seed_1 diff --git a/gcc/testsuite/gfortran.dg/write_check4.f90 b/gcc/testsuite/gfortran.dg/write_check4.f90 new file mode 100644 index 00000000000..f418ba8fbf0 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/write_check4.f90 @@ -0,0 +1,17 @@ +! { dg-do compile } +! +! PR fortran/35840 +! +! The asynchronous specifier for a data transfer statement shall be +! an initialization expression +! +! Contributed by Tobias Burnus <burnus@gcc.gnu.org> +! + character(2) :: no + no = "no" + open (unit=10, asynchronous = no) ! Ok, it isn't a transfer stmt + write(*,*, asynchronous="Y"//"E"//trim("S ")) ! Ok, it is an init expr + write(*,*, asynchronous=no) ! { dg-error "must be an initialization expression" } + read (*,*, asynchronous="Y"//"e"//trim("S ")) + read (*,*, asynchronous=no) ! { dg-error "must be an initialization expression" } +end diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index 94124141a25..4f1a9fddb43 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -551,6 +551,7 @@ split_constant_offset_1 (tree type, tree op0, enum tree_code code, tree op1, enum machine_mode pmode; int punsignedp, pvolatilep; + op0 = TREE_OPERAND (op0, 0); if (!handled_component_p (op0)) return false; diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c index ed54cf32730..bd6a9322500 100644 --- a/gcc/tree-loop-distribution.c +++ b/gcc/tree-loop-distribution.c @@ -945,6 +945,64 @@ debug_rdg_partitions (VEC (bitmap, heap) *partitions) dump_rdg_partitions (stderr, partitions); } +/* Returns the number of read and write operations in the RDG. */ + +static int +number_of_rw_in_rdg (struct graph *rdg) +{ + int i, res = 0; + + for (i = 0; i < rdg->n_vertices; i++) + { + if (RDG_MEM_WRITE_STMT (rdg, i)) + ++res; + + if (RDG_MEM_READS_STMT (rdg, i)) + ++res; + } + + return res; +} + +/* Returns the number of read and write operations in a PARTITION of + the RDG. */ + +static int +number_of_rw_in_partition (struct graph *rdg, bitmap partition) +{ + int res = 0; + unsigned i; + bitmap_iterator ii; + + EXECUTE_IF_SET_IN_BITMAP (partition, 0, i, ii) + { + if (RDG_MEM_WRITE_STMT (rdg, i)) + ++res; + + if (RDG_MEM_READS_STMT (rdg, i)) + ++res; + } + + return res; +} + +/* Returns true when one of the PARTITIONS contains all the read or + write operations of RDG. */ + +static bool +partition_contains_all_rw (struct graph *rdg, VEC (bitmap, heap) *partitions) +{ + int i; + bitmap partition; + int nrw = number_of_rw_in_rdg (rdg); + + for (i = 0; VEC_iterate (bitmap, partitions, i, partition); i++) + if (nrw == number_of_rw_in_partition (rdg, partition)) + return true; + + return false; +} + /* Generate code from STARTING_VERTICES in RDG. Returns the number of distributed loops. */ @@ -992,7 +1050,8 @@ ldist_gen (struct loop *loop, struct graph *rdg, BITMAP_FREE (processed); nbp = VEC_length (bitmap, partitions); - if (nbp <= 1) + if (nbp <= 1 + || partition_contains_all_rw (rdg, partitions)) goto ldist_done; if (dump_file && (dump_flags & TDF_DETAILS)) diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index dc576c5a3d7..d881bf3961c 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -1088,47 +1088,59 @@ fully_constant_expression (pre_expr e) vn_nary_op_t nary = PRE_EXPR_NARY (e); switch (TREE_CODE_CLASS (nary->opcode)) { + case tcc_expression: + if (nary->opcode == TRUTH_NOT_EXPR) + goto do_unary; + if (nary->opcode != TRUTH_AND_EXPR + && nary->opcode != TRUTH_OR_EXPR + && nary->opcode != TRUTH_XOR_EXPR) + return e; + /* Fallthrough. */ case tcc_binary: + case tcc_comparison: { /* We have to go from trees to pre exprs to value ids to constants. */ tree naryop0 = nary->op[0]; tree naryop1 = nary->op[1]; - tree const0, const1, result; - if (is_gimple_min_invariant (naryop0)) - const0 = naryop0; - else + tree result; + if (!is_gimple_min_invariant (naryop0)) { pre_expr rep0 = get_or_alloc_expr_for (naryop0); unsigned int vrep0 = get_expr_value_id (rep0); - const0 = get_constant_for_value_id (vrep0); + tree const0 = get_constant_for_value_id (vrep0); + if (const0) + naryop0 = fold_convert (TREE_TYPE (naryop0), const0); } - if (is_gimple_min_invariant (naryop1)) - const1 = naryop1; - else + if (!is_gimple_min_invariant (naryop1)) { pre_expr rep1 = get_or_alloc_expr_for (naryop1); unsigned int vrep1 = get_expr_value_id (rep1); - const1 = get_constant_for_value_id (vrep1); - } - result = NULL; - if (const0 && const1) - { - tree type1 = TREE_TYPE (nary->op[0]); - tree type2 = TREE_TYPE (nary->op[1]); - const0 = fold_convert (type1, const0); - const1 = fold_convert (type2, const1); - result = fold_binary (nary->opcode, nary->type, const0, - const1); + tree const1 = get_constant_for_value_id (vrep1); + if (const1) + naryop1 = fold_convert (TREE_TYPE (naryop1), const1); } + result = fold_binary (nary->opcode, nary->type, + naryop0, naryop1); if (result && is_gimple_min_invariant (result)) return get_or_alloc_expr_for_constant (result); + /* We might have simplified the expression to a + SSA_NAME for example from x_1 * 1. But we cannot + insert a PHI for x_1 unconditionally as x_1 might + not be available readily. */ return e; } + case tcc_reference: + if (nary->opcode != REALPART_EXPR + && nary->opcode != IMAGPART_EXPR + && nary->opcode != VIEW_CONVERT_EXPR) + return e; + /* Fallthrough. */ case tcc_unary: +do_unary: { - /* We have to go from trees to pre exprs to value ids to - constants. */ + /* We have to go from trees to pre exprs to value ids to + constants. */ tree naryop0 = nary->op[0]; tree const0, result; if (is_gimple_min_invariant (naryop0)) @@ -1146,7 +1158,6 @@ fully_constant_expression (pre_expr e) const0 = fold_convert (type1, const0); result = fold_unary (nary->opcode, nary->type, const0); } - if (result && is_gimple_min_invariant (result)) return get_or_alloc_expr_for_constant (result); return e; diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index 082a2785ff7..80f7a92c3dc 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -258,8 +258,8 @@ vn_get_expr_for (tree name) { case tcc_reference: if (gimple_assign_rhs_code (def_stmt) == VIEW_CONVERT_EXPR - && gimple_assign_rhs_code (def_stmt) == REALPART_EXPR - && gimple_assign_rhs_code (def_stmt) == IMAGPART_EXPR) + || gimple_assign_rhs_code (def_stmt) == REALPART_EXPR + || gimple_assign_rhs_code (def_stmt) == IMAGPART_EXPR) expr = fold_build1 (gimple_assign_rhs_code (def_stmt), gimple_expr_type (def_stmt), TREE_OPERAND (gimple_assign_rhs1 (def_stmt), 0)); @@ -498,7 +498,7 @@ vuses_to_vec (gimple stmt, VEC (tree, gc) **result) /* Copy the VUSE names in STMT into a vector, and return the vector. */ -VEC (tree, gc) * +static VEC (tree, gc) * copy_vuses_from_stmt (gimple stmt) { VEC (tree, gc) *vuses = NULL; @@ -1281,6 +1281,10 @@ vn_nary_op_lookup_stmt (gimple stmt, vn_nary_op_t *vnresult) vno1.type = TREE_TYPE (gimple_assign_lhs (stmt)); for (i = 0; i < vno1.length; ++i) vno1.op[i] = gimple_op (stmt, i + 1); + if (vno1.opcode == REALPART_EXPR + || vno1.opcode == IMAGPART_EXPR + || vno1.opcode == VIEW_CONVERT_EXPR) + vno1.op[0] = TREE_OPERAND (vno1.op[0], 0); vno1.hashcode = vn_nary_op_compute_hash (&vno1); slot = htab_find_slot_with_hash (current_info->nary, &vno1, vno1.hashcode, NO_INSERT); @@ -1385,6 +1389,10 @@ vn_nary_op_insert_stmt (gimple stmt, tree result) vno1->type = TREE_TYPE (gimple_assign_lhs (stmt)); for (i = 0; i < vno1->length; ++i) vno1->op[i] = gimple_op (stmt, i + 1); + if (vno1->opcode == REALPART_EXPR + || vno1->opcode == IMAGPART_EXPR + || vno1->opcode == VIEW_CONVERT_EXPR) + vno1->op[0] = TREE_OPERAND (vno1->op[0], 0); vno1->result = result; vno1->hashcode = vn_nary_op_compute_hash (vno1); slot = htab_find_slot_with_hash (current_info->nary, vno1, vno1->hashcode, @@ -1579,7 +1587,6 @@ set_ssa_val_to (tree from, tree to) print_generic_expr (dump_file, from, 0); fprintf (dump_file, " to "); print_generic_expr (dump_file, to, 0); - fprintf (dump_file, "\n"); } currval = SSA_VAL (from); @@ -1587,8 +1594,12 @@ set_ssa_val_to (tree from, tree to) if (currval != to && !operand_equal_p (currval, to, OEP_PURE_SAME)) { SSA_VAL (from) = to; + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, " (changed)\n"); return true; } + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, "\n"); return false; } @@ -2113,6 +2124,8 @@ simplify_binary_expression (gimple stmt) result = fold_binary (gimple_assign_rhs_code (stmt), TREE_TYPE (gimple_get_lhs (stmt)), op0, op1); + if (result) + STRIP_USELESS_TYPE_CONVERSION (result); fold_undefer_overflow_warnings (result && valid_gimple_rhs_p (result), stmt, 0); @@ -2375,8 +2388,18 @@ visit_use (tree use) case GIMPLE_SINGLE_RHS: switch (TREE_CODE_CLASS (gimple_assign_rhs_code (stmt))) { - case tcc_declaration: case tcc_reference: + /* VOP-less references can go through unary case. */ + if ((gimple_assign_rhs_code (stmt) == REALPART_EXPR + || gimple_assign_rhs_code (stmt) == IMAGPART_EXPR + || gimple_assign_rhs_code (stmt) == VIEW_CONVERT_EXPR ) + && TREE_CODE (TREE_OPERAND (gimple_assign_rhs1 (stmt), 0)) == SSA_NAME) + { + changed = visit_unary_op (lhs, stmt); + break; + } + /* Fallthrough. */ + case tcc_declaration: changed = visit_reference_op_load (lhs, gimple_assign_rhs1 (stmt), stmt); break; diff --git a/gcc/tree-ssa-sccvn.h b/gcc/tree-ssa-sccvn.h index 84f096ef224..cc74acce10d 100644 --- a/gcc/tree-ssa-sccvn.h +++ b/gcc/tree-ssa-sccvn.h @@ -196,5 +196,4 @@ unsigned int get_constant_value_id (tree); unsigned int get_or_alloc_constant_value_id (tree); bool value_id_constant_p (unsigned int); VEC (tree, gc) *shared_vuses_from_stmt (gimple); -VEC (tree, gc) *copy_vuses_from_stmt (gimple); #endif /* TREE_SSA_SCCVN_H */ diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 278bb06d6b8..1d0d28c7b4e 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,11 @@ +2008-10-31 Manuel López-Ibáñez <manu@gcc.gnu.org> + + * expr.c (struct op): Add location. + (_cpp_parse_expr): Propagate locations throught the stack + of expressions. + (reduce): Likewise. + (check_promotion): Use explicit location in errors. + 2008-10-05 Matthew Gingell <gingell@adacore.com> Arnaud Charlet <charlet@adacore.com> diff --git a/libcpp/expr.c b/libcpp/expr.c index c0e3cbd8006..591308b3619 100644 --- a/libcpp/expr.c +++ b/libcpp/expr.c @@ -32,6 +32,7 @@ struct op { const cpp_token *token; /* The token forming op (for diagnostics). */ cpp_num value; /* The value logically "right" of op. */ + source_location loc; /* The location of this value. */ enum cpp_ttype op; }; @@ -875,6 +876,7 @@ _cpp_parse_expr (cpp_reader *pfile, bool is_if) lex_count++; op.token = cpp_get_token (pfile); op.op = op.token->type; + op.loc = op.token->src_loc; switch (op.op) { @@ -978,6 +980,7 @@ _cpp_parse_expr (cpp_reader *pfile, bool is_if) top->op = op.op; top->token = op.token; + top->loc = op.token->src_loc; } /* The controlling macro expression is only valid if we called lex 3 @@ -1031,6 +1034,7 @@ reduce (cpp_reader *pfile, struct op *top, enum cpp_ttype op) case CPP_NOT: case CPP_COMPL: top[-1].value = num_unary_op (pfile, top->value, top->op); + top[-1].loc = top->loc; break; case CPP_PLUS: @@ -1040,6 +1044,7 @@ reduce (cpp_reader *pfile, struct op *top, enum cpp_ttype op) case CPP_COMMA: top[-1].value = num_binary_op (pfile, top[-1].value, top->value, top->op); + top[-1].loc = top->loc; break; case CPP_GREATER: @@ -1048,12 +1053,14 @@ reduce (cpp_reader *pfile, struct op *top, enum cpp_ttype op) case CPP_LESS_EQ: top[-1].value = num_inequality_op (pfile, top[-1].value, top->value, top->op); + top[-1].loc = top->loc; break; case CPP_EQ_EQ: case CPP_NOT_EQ: top[-1].value = num_equality_op (pfile, top[-1].value, top->value, top->op); + top[-1].loc = top->loc; break; case CPP_AND: @@ -1061,16 +1068,19 @@ reduce (cpp_reader *pfile, struct op *top, enum cpp_ttype op) case CPP_XOR: top[-1].value = num_bitwise_op (pfile, top[-1].value, top->value, top->op); + top[-1].loc = top->loc; break; case CPP_MULT: top[-1].value = num_mul (pfile, top[-1].value, top->value); + top[-1].loc = top->loc; break; case CPP_DIV: case CPP_MOD: top[-1].value = num_div_op (pfile, top[-1].value, top->value, top->op); + top[-1].loc = top->loc; break; case CPP_OR_OR: @@ -1082,6 +1092,7 @@ reduce (cpp_reader *pfile, struct op *top, enum cpp_ttype op) top->value.high = 0; top->value.unsignedp = false; top->value.overflow = false; + top->loc = top[1].loc; continue; case CPP_AND_AND: @@ -1093,16 +1104,20 @@ reduce (cpp_reader *pfile, struct op *top, enum cpp_ttype op) top->value.high = 0; top->value.unsignedp = false; top->value.overflow = false; + top->loc = top[1].loc; continue; case CPP_OPEN_PAREN: if (op != CPP_CLOSE_PAREN) { - cpp_error (pfile, CPP_DL_ERROR, "missing ')' in expression"); + cpp_error_with_line (pfile, CPP_DL_ERROR, + top->token->src_loc, + 0, "missing ')' in expression"); return 0; } top--; top->value = top[1].value; + top->loc = top[1].loc; return top; case CPP_COLON: @@ -1111,9 +1126,13 @@ reduce (cpp_reader *pfile, struct op *top, enum cpp_ttype op) { pfile->state.skip_eval--; top->value = top[1].value; + top->loc = top[1].loc; } else - top->value = top[2].value; + { + top->value = top[2].value; + top->loc = top[2].loc; + } top->value.unsignedp = (top[1].value.unsignedp || top[2].value.unsignedp); continue; @@ -1168,12 +1187,12 @@ check_promotion (cpp_reader *pfile, const struct op *op) if (op->value.unsignedp) { if (!num_positive (op[-1].value, CPP_OPTION (pfile, precision))) - cpp_error (pfile, CPP_DL_WARNING, - "the left operand of \"%s\" changes sign when promoted", - cpp_token_as_text (pfile, op->token)); + cpp_error_with_line (pfile, CPP_DL_WARNING, op[-1].loc, 0, + "the left operand of \"%s\" changes sign when promoted", + cpp_token_as_text (pfile, op->token)); } else if (!num_positive (op->value, CPP_OPTION (pfile, precision))) - cpp_error (pfile, CPP_DL_WARNING, + cpp_error_with_line (pfile, CPP_DL_WARNING, op->loc, 0, "the right operand of \"%s\" changes sign when promoted", cpp_token_as_text (pfile, op->token)); } diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index c4630a57f11..2903760cb8c 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,10 @@ +2008-11-01 Dennis Wassel <dennis.wassel@gmail.com> + + PR fortran/37159 + * intrinsics/random.c: Added comment to adapt check.c, should + kiss_size change. + Few cosmetic changes to existing comments. + 2008-10-22 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/37707 diff --git a/libgfortran/intrinsics/random.c b/libgfortran/intrinsics/random.c index 360e6ec22ba..24ba1058e57 100644 --- a/libgfortran/intrinsics/random.c +++ b/libgfortran/intrinsics/random.c @@ -75,8 +75,7 @@ static __gthread_mutex_t random_lock; GFC_REAL_* types in the range of [0,1). If GFC_REAL_*_RADIX are 2 or 16, respectively, we mask off the bits that don't fit into the correct GFC_REAL_*, convert to the real type, then multiply by the - correct offset. -*/ + correct offset. */ static inline void @@ -214,8 +213,7 @@ KISS algorithm. */ We do this by using three generators with different seeds, the first one always for the most significant bits, the second one for bits 33..64 (if present in the REAL kind), and the third one - (called twice) for REAL(16). -*/ + (called twice) for REAL(16). */ #define GFC_SL(k, n) ((k)^((k)<<(n))) #define GFC_SR(k, n) ((k)^((k)>>(n))) @@ -229,8 +227,11 @@ KISS algorithm. */ with 0<=x<2^32, 0<y<2^32, 0<=z<2^32, 0<=c<698769069 except that the two pairs z=0,c=0 and z=2^32-1,c=698769068 - should be avoided. -*/ + should be avoided. */ + +/* Any modifications to the seeds that change kiss_size below need to be + reflected in check.c (gfc_check_random_seed) to enable correct + compile-time checking of PUT size for the RANDOM_SEED intrinsic. */ #define KISS_DEFAULT_SEED_1 123456789, 362436069, 521288629, 316191069 #define KISS_DEFAULT_SEED_2 987654321, 458629013, 582859209, 438195021 @@ -390,7 +391,7 @@ arandom_r4 (gfc_array_r4 *x) while (dest) { - /* random_r4 (dest); */ + /* random_r4 (dest); */ kiss = kiss_random_kernel (kiss_seed_1); rnumber_4 (dest, kiss); @@ -457,7 +458,7 @@ arandom_r8 (gfc_array_r8 *x) while (dest) { - /* random_r8 (dest); */ + /* random_r8 (dest); */ kiss = ((GFC_UINTEGER_8) kiss_random_kernel (kiss_seed_1)) << 32; kiss += kiss_random_kernel (kiss_seed_2); rnumber_8 (dest, kiss); @@ -527,7 +528,7 @@ arandom_r10 (gfc_array_r10 *x) while (dest) { - /* random_r10 (dest); */ + /* random_r10 (dest); */ kiss = ((GFC_UINTEGER_8) kiss_random_kernel (kiss_seed_1)) << 32; kiss += kiss_random_kernel (kiss_seed_2); rnumber_10 (dest, kiss); @@ -599,7 +600,7 @@ arandom_r16 (gfc_array_r16 *x) while (dest) { - /* random_r16 (dest); */ + /* random_r16 (dest); */ kiss1 = ((GFC_UINTEGER_8) kiss_random_kernel (kiss_seed_1)) << 32; kiss1 += kiss_random_kernel (kiss_seed_2); diff --git a/libjava/ChangeLog b/libjava/ChangeLog index d6687afcb45..b5f92489cb3 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2008-10-31 Andrew Haley <aph@redhat.com> + + * Makefile.am (install-data-local): Correct symlink paths for + SDK-style installed JARs. + Correct symlinks for headers when DESTDIR is set. + 2008-10-23 David Edelsohn <edelsohn@gnu.org> PR target/35485 diff --git a/libjava/Makefile.am b/libjava/Makefile.am index 82cc63e3a81..0132db37d49 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -612,11 +612,15 @@ if CREATE_JAVA_HOME version=$(JAVA_VERSION).$(BUILD_VERSION); \ working_dir=`pwd`; \ cd $(DESTDIR)$(JVM_JAR_DIR); \ + RELATIVE=$$(relative $(DESTDIR)$(JRE_LIB_DIR) \ + $(DESTDIR)$(JVM_JAR_DIR)); \ for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns \ jndi-ldap jndi-rmi jsse sasl; \ do \ - ln -s $$RELATIVE/$$jarname.jar $$jarname-$$version.jar; \ + ln -sf $$RELATIVE/rt.jar $$jarname-$$version.jar; \ done; \ + RELATIVE=$$(relative $(DESTDIR)$(jardir) \ + $(DESTDIR)$(JVM_JAR_DIR)); \ for jar in *-$$version.jar; \ do \ ln -sf $$jar $$(echo $$jar | sed "s|-$$version.jar|-$(JAVA_VERSION).jar|g"); \ @@ -633,14 +637,7 @@ if CREATE_JAVA_HOME $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/client; \ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server; \ $(mkinstalldirs) $(DESTDIR)$(SDK_LIB_DIR); \ - cd $(DESTDIR)$(JRE_LIB_DIR); \ - for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns \ - jndi-ldap jndi-rmi jsse sasl; \ - do \ - ln -s rt.jar $$jarname.jar; \ - done; \ - cd $$working_dir; \ - RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \ + RELATIVE=$$(relative $(DESTDIR)$(datadir)/java \ $(DESTDIR)$(JRE_LIB_DIR)); \ ln -sf $$RELATIVE/libgcj-$(gcc_version).jar \ $(DESTDIR)$(JRE_LIB_DIR)/rt.jar; \ @@ -656,14 +653,14 @@ if CREATE_JAVA_HOME $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server); \ ln -sf $$RELATIVE/libjvm.so \ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server/libjvm.so; \ - RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \ + RELATIVE=$$(relative $(DESTDIR)$(datadir)/java \ $(DESTDIR)$(SDK_LIB_DIR)); \ ln -sf $$RELATIVE/libgcj-tools-$(gcc_version).jar \ $(DESTDIR)$(SDK_LIB_DIR)/tools.jar; \ for headername in jawt jni; do \ DIRECTORY=$$(dirname $$($(DESTDIR)$(bindir)/gcj \ -print-file-name=include/$$headername.h)); \ - RELATIVE=$$(relative $(DESTDIR)$$DIRECTORY \ + RELATIVE=$$(relative $$DIRECTORY \ $(DESTDIR)$(SDK_INCLUDE_DIR)); \ ln -sf $$RELATIVE/$$headername.h \ $(DESTDIR)$(SDK_INCLUDE_DIR)/$$headername.h; \ @@ -671,12 +668,12 @@ if CREATE_JAVA_HOME for headername in jawt_md jni_md; do \ DIRECTORY=$$(dirname $$($(DESTDIR)$(bindir)/gcj \ -print-file-name=include/$$headername.h)); \ - RELATIVE=$$(relative $(DESTDIR)$$DIRECTORY \ + RELATIVE=$$(relative $$DIRECTORY \ $(DESTDIR)$(SDK_INCLUDE_DIR)/linux); \ ln -sf $$RELATIVE/$$headername.h \ $(DESTDIR)$(SDK_INCLUDE_DIR)/linux/$$headername.h; \ done; \ - RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \ + RELATIVE=$$(relative $(DESTDIR)$(datadir)/java \ $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)); \ ln -sf $$RELATIVE/src-$(gcc_version).zip \ $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)/src.zip; diff --git a/libjava/Makefile.in b/libjava/Makefile.in index a803fedb590..064cdfc5b2e 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -12382,6 +12382,7 @@ install-data-local: @CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU) @CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR) @CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS) +@CREATE_JAVA_HOME_TRUE@ set -x ; @CREATE_JAVA_HOME_TRUE@ relative() { \ @CREATE_JAVA_HOME_TRUE@ $(PERL) -e 'use File::Spec; \ @CREATE_JAVA_HOME_TRUE@ print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \ @@ -12433,11 +12434,15 @@ install-data-local: @CREATE_JAVA_HOME_TRUE@ version=$(JAVA_VERSION).$(BUILD_VERSION); \ @CREATE_JAVA_HOME_TRUE@ working_dir=`pwd`; \ @CREATE_JAVA_HOME_TRUE@ cd $(DESTDIR)$(JVM_JAR_DIR); \ +@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(JRE_LIB_DIR) \ +@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JVM_JAR_DIR)); \ @CREATE_JAVA_HOME_TRUE@ for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns \ @CREATE_JAVA_HOME_TRUE@ jndi-ldap jndi-rmi jsse sasl; \ @CREATE_JAVA_HOME_TRUE@ do \ -@CREATE_JAVA_HOME_TRUE@ ln -s $$RELATIVE/$$jarname.jar $$jarname-$$version.jar; \ +@CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/rt.jar $$jarname-$$version.jar; \ @CREATE_JAVA_HOME_TRUE@ done; \ +@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(jardir) \ +@CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JVM_JAR_DIR)); \ @CREATE_JAVA_HOME_TRUE@ for jar in *-$$version.jar; \ @CREATE_JAVA_HOME_TRUE@ do \ @CREATE_JAVA_HOME_TRUE@ ln -sf $$jar $$(echo $$jar | sed "s|-$$version.jar|-$(JAVA_VERSION).jar|g"); \ @@ -12454,14 +12459,7 @@ install-data-local: @CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/client; \ @CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server; \ @CREATE_JAVA_HOME_TRUE@ $(mkinstalldirs) $(DESTDIR)$(SDK_LIB_DIR); \ -@CREATE_JAVA_HOME_TRUE@ cd $(DESTDIR)$(JRE_LIB_DIR); \ -@CREATE_JAVA_HOME_TRUE@ for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns \ -@CREATE_JAVA_HOME_TRUE@ jndi-ldap jndi-rmi jsse sasl; \ -@CREATE_JAVA_HOME_TRUE@ do \ -@CREATE_JAVA_HOME_TRUE@ ln -s rt.jar $$jarname.jar; \ -@CREATE_JAVA_HOME_TRUE@ done; \ -@CREATE_JAVA_HOME_TRUE@ cd $$working_dir; \ -@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \ +@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(datadir)/java \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)); \ @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/libgcj-$(gcc_version).jar \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/rt.jar; \ @@ -12477,14 +12475,15 @@ install-data-local: @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server); \ @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/libjvm.so \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server/libjvm.so; \ -@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \ +@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(datadir)/java \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_LIB_DIR)); \ @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/libgcj-tools-$(gcc_version).jar \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_LIB_DIR)/tools.jar; \ @CREATE_JAVA_HOME_TRUE@ for headername in jawt jni; do \ @CREATE_JAVA_HOME_TRUE@ DIRECTORY=$$(dirname $$($(DESTDIR)$(bindir)/gcj \ @CREATE_JAVA_HOME_TRUE@ -print-file-name=include/$$headername.h)); \ -@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$$DIRECTORY \ +@CREATE_JAVA_HOME_TRUE@ echo $$DIRECTORY ; \ +@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $$DIRECTORY \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_INCLUDE_DIR)); \ @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/$$headername.h \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_INCLUDE_DIR)/$$headername.h; \ @@ -12492,12 +12491,12 @@ install-data-local: @CREATE_JAVA_HOME_TRUE@ for headername in jawt_md jni_md; do \ @CREATE_JAVA_HOME_TRUE@ DIRECTORY=$$(dirname $$($(DESTDIR)$(bindir)/gcj \ @CREATE_JAVA_HOME_TRUE@ -print-file-name=include/$$headername.h)); \ -@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$$DIRECTORY \ +@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $$DIRECTORY \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_INCLUDE_DIR)/linux); \ @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/$$headername.h \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(SDK_INCLUDE_DIR)/linux/$$headername.h; \ @CREATE_JAVA_HOME_TRUE@ done; \ -@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \ +@CREATE_JAVA_HOME_TRUE@ RELATIVE=$$(relative $(DESTDIR)$(datadir)/java \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)); \ @CREATE_JAVA_HOME_TRUE@ ln -sf $$RELATIVE/src-$(gcc_version).zip \ @CREATE_JAVA_HOME_TRUE@ $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)/src.zip; diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 4230bc6a129..47ffacc35ce 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,77 @@ +2008-11-03 Paolo Carlini <paolo.carlini@oracle.com> + + * include/bits/locale_facets.tcc (num_get<>::do_get(iter_type, + iter_type, ios_base&, ios_base::iostate&, bool&): Tidy. + * testsuite/22_locale/num_get/get/char/37958.cc: Extend. + * testsuite/22_locale/num_get/get/wchar_t/37958.cc: Likewise. + +2008-11-01 Paolo Carlini <paolo.carlini@oracle.com> + + PR libstdc++/37958 (cont again) + * include/bits/locale_facets.tcc (num_get<>::do_get(iter_type, + iter_type, ios_base&, ios_base::iostate&, bool&): Fix again. + * testsuite/22_locale/num_get/get/char/37958.cc: Extend. + * testsuite/22_locale/num_get/get/wchar_t/37958.cc: Likewise. + +2008-11-01 Paolo Carlini <paolo.carlini@oracle.com> + + * include/bits/locale_facets.tcc (num_get<>::do_get(, long&), + num_get<>::do_get(, unsigned short&), + num_get<>::do_get(, unsigned int&), + num_get<>::do_get(, unsigned long&), + num_get<>::do_get(, long long&), + num_get<>::do_get(, unsigned long long&), + num_put<>::do_put(, long), num_put<>::do_put(, unsigned long), + num_put<>::do_put(, long long), + num_put<>::do_put(, unsigned long long)): Move inline... + * include/bits/locale_facets.h: ... here. + +2008-11-01 Paolo Carlini <paolo.carlini@oracle.com> + + PR libstdc++/37958 (cont) + * include/bits/locale_facets.tcc (num_get<>::do_get(iter_type, + iter_type, ios_base&, ios_base::iostate&, bool&): Fix again. + +2008-11-01 Jonathan Wakely <jwakely.gcc@gmail.com> + + * include/bits/shared_ptr.h: Update comparisons to match WP. + (_Sp_counted_ptr): Make copy and assignment members deleted. + (_Sp_counted_deleter): Remove private copy and assignment members. + (__shared_count::_M_less,__weak_count::_M_less,operator<): Replace + friend operator< with overloaded _M_less member functions to allow + comparison with either shared_count or weak_count. + (__shared_ptr::_M_less,__weak_ptr::_M_less): Replace with... + (__shared_ptr::owner_before,__weak_ptr::owner_before): New overloads + for ownership-based ordering. + (operator<(__shared_ptr,__shared_ptr)): Compare stored pointers, + make non-friend. + (operator==(__shared_ptr,__shared_ptr)): Make non-friend. + (operator!=(__shared_ptr,__shared_ptr)): Likewise. + (less<__shared_ptr<>>,less<shared_ptr<>>,_Sp_less): Explicitly call + pointer specialization. + (__weak_ptr::operator<,weak_ptr::operator<=,weak_ptr::operator>, + weak_ptr::operator>=): Remove operator< and delete all comparisons. + (_Sp_owner_less,owner_less): Predicate for ownership-based ordering. + (operator<(shared_ptr,shared_ptr): Overload for derived shared_ptr. + (operator==(shared_ptr,shared_ptr): Likewise. + (operator!=(shared_ptr,shared_ptr): Likewise. + (swap(shared_ptr,shared_ptr)): Fix parameter types. + (swap(weak_ptr,weak_ptr)): Add missing overload. + * testsuite/20_util/owner_less/cmp.cc: New. + * testsuite/20_util/shared_ptr/comparison/cmp.cc: Test other ops. + * testsuite/20_util/shared_ptr/comparison/less.cc: New. + * testsuite/20_util/shared_ptr/observers/owner_before.cc: New. + * testsuite/20_util/weak_ptr/observers/owner_before.cc: New. + * testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: New. + +2008-10-31 Paolo Carlini <paolo.carlini@oracle.com> + + PR libstdc++/37958 + * include/bits/locale_facets.tcc (num_get<>::do_get(iter_type, + iter_type, ios_base&, ios_base::iostate&, bool&): Fix. + * testsuite/22_locale/num_get/get/char/37958.cc: New. + * testsuite/22_locale/num_get/get/wchar_t/37958.cc: Likewise. + 2008-10-27 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/37919 diff --git a/libstdc++-v3/include/bits/locale_facets.h b/libstdc++-v3/include/bits/locale_facets.h index 7280531fb24..2e87b461b76 100644 --- a/libstdc++-v3/include/bits/locale_facets.h +++ b/libstdc++-v3/include/bits/locale_facets.h @@ -2104,12 +2104,12 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE iter_type _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&, - string& __xtrc) const; + string&) const; template<typename _ValueT> iter_type _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, - _ValueT& __v) const; + _ValueT&) const; template<typename _CharT2> typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type @@ -2167,30 +2167,36 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE virtual iter_type do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const; - virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, long&) const; + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, long& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - unsigned short&) const; + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned short& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - unsigned int&) const; + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned int& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - unsigned long&) const; + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned long& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } #ifdef _GLIBCXX_USE_LONG_LONG virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - long long&) const; + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, long long& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - unsigned long long&) const; + do_get(iter_type __beg, iter_type __end, ios_base& __io, + ios_base::iostate& __err, unsigned long long& __v) const + { return _M_extract_int(__beg, __end, __io, __err, __v); } #endif virtual iter_type @@ -2461,17 +2467,24 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE do_put(iter_type, ios_base&, char_type __fill, bool __v) const; virtual iter_type - do_put(iter_type, ios_base&, char_type __fill, long __v) const; + do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const + { return _M_insert_int(__s, __io, __fill, __v); } virtual iter_type - do_put(iter_type, ios_base&, char_type __fill, unsigned long) const; + do_put(iter_type __s, ios_base& __io, char_type __fill, + unsigned long __v) const + { return _M_insert_int(__s, __io, __fill, __v); } #ifdef _GLIBCXX_USE_LONG_LONG virtual iter_type - do_put(iter_type, ios_base&, char_type __fill, long long __v) const; + do_put(iter_type __s, ios_base& __io, char_type __fill, + long long __v) const + { return _M_insert_int(__s, __io, __fill, __v); } virtual iter_type - do_put(iter_type, ios_base&, char_type __fill, unsigned long long) const; + do_put(iter_type __s, ios_base& __io, char_type __fill, + unsigned long long __v) const + { return _M_insert_int(__s, __io, __fill, __v); } #endif virtual iter_type diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index 130aa915f7f..9a44007e451 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -599,56 +599,71 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE else { // Parse bool values as alphanumeric. - typedef __numpunct_cache<_CharT> __cache_type; + typedef __numpunct_cache<_CharT> __cache_type; __use_cache<__cache_type> __uc; const locale& __loc = __io._M_getloc(); const __cache_type* __lc = __uc(__loc); bool __testf = true; bool __testt = true; - size_t __n; - bool __testeof = __beg == __end; - for (__n = 0; !__testeof; ++__n) - { + bool __donef = __lc->_M_falsename_size == 0; + bool __donet = __lc->_M_truename_size == 0; + bool __testeof = false; + size_t __n = 0; + while (!__donef || !__donet) + { + if (__beg == __end) + { + __testeof = true; + break; + } + const char_type __c = *__beg; - if (__testf) - { - if (__n < __lc->_M_falsename_size) - __testf = __c == __lc->_M_falsename[__n]; - else - break; - } + if (!__donef) + __testf = __c == __lc->_M_falsename[__n]; - if (__testt) - { - if (__n < __lc->_M_truename_size) - __testt = __c == __lc->_M_truename[__n]; - else - break; - } + if (!__testf && __donet) + break; + + if (!__donet) + __testt = __c == __lc->_M_truename[__n]; - if (!__testf && !__testt) + if (!__testt && __donef) break; - - if (++__beg == __end) - __testeof = true; - } - if (__testf && __n == __lc->_M_falsename_size) - __v = false; - else if (__testt && __n == __lc->_M_truename_size) - __v = true; + + if (!__testt && !__testf) + break; + + ++__n; + ++__beg; + + __donef = !__testf || __n >= __lc->_M_falsename_size; + __donet = !__testt || __n >= __lc->_M_truename_size; + } + if (__testf && __n == __lc->_M_falsename_size && __n) + { + __v = false; + if (__testt && __n == __lc->_M_truename_size) + __err = ios_base::failbit; + else + __err = __testeof ? ios_base::eofbit : ios_base::goodbit; + } + else if (__testt && __n == __lc->_M_truename_size && __n) + { + __v = true; + __err = __testeof ? ios_base::eofbit : ios_base::goodbit; + } else { // _GLIBCXX_RESOLVE_LIB_DEFECTS // 23. Num_get overflow result. __v = false; __err = ios_base::failbit; + if (__testeof) + __err |= ios_base::eofbit; } - - if (__testeof) - __err |= ios_base::eofbit; - } + } return __beg; } @@ -656,50 +671,6 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE _InIter num_get<_CharT, _InIter>:: do_get(iter_type __beg, iter_type __end, ios_base& __io, - ios_base::iostate& __err, long& __v) const - { return _M_extract_int(__beg, __end, __io, __err, __v); } - - template<typename _CharT, typename _InIter> - _InIter - num_get<_CharT, _InIter>:: - do_get(iter_type __beg, iter_type __end, ios_base& __io, - ios_base::iostate& __err, unsigned short& __v) const - { return _M_extract_int(__beg, __end, __io, __err, __v); } - - template<typename _CharT, typename _InIter> - _InIter - num_get<_CharT, _InIter>:: - do_get(iter_type __beg, iter_type __end, ios_base& __io, - ios_base::iostate& __err, unsigned int& __v) const - { return _M_extract_int(__beg, __end, __io, __err, __v); } - - template<typename _CharT, typename _InIter> - _InIter - num_get<_CharT, _InIter>:: - do_get(iter_type __beg, iter_type __end, ios_base& __io, - ios_base::iostate& __err, unsigned long& __v) const - { return _M_extract_int(__beg, __end, __io, __err, __v); } - -#ifdef _GLIBCXX_USE_LONG_LONG - template<typename _CharT, typename _InIter> - _InIter - num_get<_CharT, _InIter>:: - do_get(iter_type __beg, iter_type __end, ios_base& __io, - ios_base::iostate& __err, long long& __v) const - { return _M_extract_int(__beg, __end, __io, __err, __v); } - - template<typename _CharT, typename _InIter> - _InIter - num_get<_CharT, _InIter>:: - do_get(iter_type __beg, iter_type __end, ios_base& __io, - ios_base::iostate& __err, unsigned long long& __v) const - { return _M_extract_int(__beg, __end, __io, __err, __v); } -#endif - - template<typename _CharT, typename _InIter> - _InIter - num_get<_CharT, _InIter>:: - do_get(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, float& __v) const { string __xtrc; @@ -1140,34 +1111,6 @@ _GLIBCXX_BEGIN_LDBL_NAMESPACE template<typename _CharT, typename _OutIter> _OutIter num_put<_CharT, _OutIter>:: - do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const - { return _M_insert_int(__s, __io, __fill, __v); } - - template<typename _CharT, typename _OutIter> - _OutIter - num_put<_CharT, _OutIter>:: - do_put(iter_type __s, ios_base& __io, char_type __fill, - unsigned long __v) const - { return _M_insert_int(__s, __io, __fill, __v); } - -#ifdef _GLIBCXX_USE_LONG_LONG - template<typename _CharT, typename _OutIter> - _OutIter - num_put<_CharT, _OutIter>:: - do_put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const - { return _M_insert_int(__s, __io, __fill, __v); } - - template<typename _CharT, typename _OutIter> - _OutIter - num_put<_CharT, _OutIter>:: - do_put(iter_type __s, ios_base& __io, char_type __fill, - unsigned long long __v) const - { return _M_insert_int(__s, __io, __fill, __v); } -#endif - - template<typename _CharT, typename _OutIter> - _OutIter - num_put<_CharT, _OutIter>:: do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const { return _M_insert_float(__s, __io, __fill, char(), __v); } diff --git a/libstdc++-v3/include/bits/shared_ptr.h b/libstdc++-v3/include/bits/shared_ptr.h index 2d7cf24c043..c017dcf6fc6 100644 --- a/libstdc++-v3/include/bits/shared_ptr.h +++ b/libstdc++-v3/include/bits/shared_ptr.h @@ -82,9 +82,8 @@ namespace std _M_get_deleter(const std::type_info& __ti) { return 0; } - private: - _Sp_counted_ptr(const _Sp_counted_ptr&); - _Sp_counted_ptr& operator=(const _Sp_counted_ptr&); + _Sp_counted_ptr(const _Sp_counted_ptr&) = delete; + _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete; protected: _Ptr _M_ptr; // copy constructor must not throw @@ -143,10 +142,6 @@ namespace std _M_get_deleter(const std::type_info& __ti) { return __ti == typeid(_Deleter) ? &_M_del._M_del : 0; } - private: - _Sp_counted_deleter(const _Sp_counted_deleter&); - _Sp_counted_deleter& operator=(const _Sp_counted_deleter&); - protected: _My_Deleter _M_del; // copy constructor must not throw }; @@ -365,18 +360,23 @@ namespace std _M_unique() const // nothrow { return this->_M_get_use_count() == 1; } - friend inline bool - operator==(const __shared_count& __a, const __shared_count& __b) - { return __a._M_pi == __b._M_pi; } - - friend inline bool - operator<(const __shared_count& __a, const __shared_count& __b) - { return std::less<_Sp_counted_base<_Lp>*>()(__a._M_pi, __b._M_pi); } - void* _M_get_deleter(const std::type_info& __ti) const { return _M_pi ? _M_pi->_M_get_deleter(__ti) : 0; } + bool + _M_less(const __shared_count& __rhs) const + { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } + + bool + _M_less(const __weak_count<_Lp>& __rhs) const + { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } + + // friend function injected into enclosing namespace and found by ADL + friend inline bool + operator==(const __shared_count& __a, const __shared_count& __b) + { return __a._M_pi == __b._M_pi; } + private: friend class __weak_count<_Lp>; @@ -468,13 +468,18 @@ namespace std _M_get_use_count() const // nothrow { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } + bool + _M_less(const __weak_count& __rhs) const + { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } + + bool + _M_less(const __shared_count<_Lp>& __rhs) const + { return std::less<_Sp_counted_base<_Lp>*>()(this->_M_pi, __rhs._M_pi); } + + // friend function injected into enclosing namespace and found by ADL friend inline bool - operator==(const __weak_count<_Lp>& __a, const __weak_count<_Lp>& __b) + operator==(const __weak_count& __a, const __weak_count& __b) { return __a._M_pi == __b._M_pi; } - - friend inline bool - operator<(const __weak_count<_Lp>& __a, const __weak_count<_Lp>& __b) - { return std::less<_Sp_counted_base<_Lp>*>()(__a._M_pi, __b._M_pi); } private: friend class __shared_count<_Lp>; @@ -838,6 +843,16 @@ namespace std _M_refcount._M_swap(__other._M_refcount); } + template<typename _Tp1> + bool + owner_before(__shared_ptr<_Tp1, _Lp> const& __rhs) const + { return _M_refcount._M_less(__rhs._M_refcount); } + + template<typename _Tp1> + bool + owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const + { return _M_refcount._M_less(__rhs._M_refcount); } + protected: // This constructor is non-standard, it is used by allocate_shared. template<typename _Alloc, typename... _Args> @@ -862,37 +877,70 @@ namespace std _M_get_deleter(const std::type_info& __ti) const { return _M_refcount._M_get_deleter(__ti); } - template<typename _Tp1, _Lock_policy _Lp1> - bool - _M_less(const __shared_ptr<_Tp1, _Lp1>& __rhs) const - { return _M_refcount < __rhs._M_refcount; } - template<typename _Tp1, _Lock_policy _Lp1> friend class __shared_ptr; template<typename _Tp1, _Lock_policy _Lp1> friend class __weak_ptr; template<typename _Del, typename _Tp1, _Lock_policy _Lp1> friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&); - // Friends injected into enclosing namespace and found by ADL: - template<typename _Tp1> - friend inline bool - operator==(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b) - { return __a.get() == __b.get(); } - - template<typename _Tp1> - friend inline bool - operator!=(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b) - { return __a.get() != __b.get(); } - - template<typename _Tp1> - friend inline bool - operator<(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b) - { return __a._M_less(__b); } - _Tp* _M_ptr; // Contained pointer. __shared_count<_Lp> _M_refcount; // Reference counter. }; + // 20.8.13.2.7 shared_ptr comparisons + template<typename _Tp1, typename _Tp2, _Lock_policy _Lp> + inline bool + operator==(const __shared_ptr<_Tp1, _Lp>& __a, + const __shared_ptr<_Tp2, _Lp>& __b) + { return __a.get() == __b.get(); } + + template<typename _Tp1, typename _Tp2, _Lock_policy _Lp> + inline bool + operator!=(const __shared_ptr<_Tp1, _Lp>& __a, + const __shared_ptr<_Tp2, _Lp>& __b) + { return __a.get() != __b.get(); } + + template<typename _Tp1, typename _Tp2, _Lock_policy _Lp> + inline bool + operator<(const __shared_ptr<_Tp1, _Lp>& __a, + const __shared_ptr<_Tp2, _Lp>& __b) + { return __a.get() < __b.get(); } + + template<typename _Sp> + struct _Sp_less : public binary_function<_Sp, _Sp, bool> + { + bool + operator()(const _Sp& __lhs, const _Sp& __rhs) const + { + return std::less<typename _Sp::element_type*>()(__lhs.get(), + __rhs.get()); + } + }; + + template<typename _Tp, _Lock_policy _Lp> + struct less<__shared_ptr<_Tp, _Lp>> + : public _Sp_less<__shared_ptr<_Tp, _Lp>> + { }; + + // XXX LessThanComparable<_Tp> concept should provide >, >= and <= + template<typename _Tp, _Lock_policy _Lp> + inline bool + operator>(const __shared_ptr<_Tp, _Lp>& __a, + const __shared_ptr<_Tp, _Lp>& __b) + { return __a.get() > __b.get(); } + + template<typename _Tp, _Lock_policy _Lp> + inline bool + operator>=(const __shared_ptr<_Tp, _Lp>& __a, + const __shared_ptr<_Tp, _Lp>& __b) + { return __a.get() >= __b.get(); } + + template<typename _Tp, _Lock_policy _Lp> + inline bool + operator<=(const __shared_ptr<_Tp, _Lp>& __a, + const __shared_ptr<_Tp, _Lp>& __b) + { return __a.get() <= __b.get(); } + // 2.2.3.8 shared_ptr specialized algorithms. template<typename _Tp, _Lock_policy _Lp> inline void @@ -1053,7 +1101,17 @@ namespace std bool expired() const // never throws { return _M_refcount._M_get_use_count() == 0; } - + + template<typename _Tp1> + bool + owner_before(const __shared_ptr<_Tp1, _Lp>& __rhs) const + { return _M_refcount._M_less(__rhs._M_refcount); } + + template<typename _Tp1> + bool + owner_before(const __weak_ptr<_Tp1, _Lp>& __rhs) const + { return _M_refcount._M_less(__rhs._M_refcount); } + void reset() // never throws { __weak_ptr().swap(*this); } @@ -1065,6 +1123,16 @@ namespace std _M_refcount._M_swap(__s._M_refcount); } + // comparisons + template<typename _Tp1> + bool operator<(const __weak_ptr<_Tp1, _Lp>&) const = delete; + template<typename _Tp1> + bool operator<=(const __weak_ptr<_Tp1, _Lp>&) const = delete; + template<typename _Tp1> + bool operator>(const __weak_ptr<_Tp1, _Lp>&) const = delete; + template<typename _Tp1> + bool operator>=(const __weak_ptr<_Tp1, _Lp>&) const = delete; + private: // Used by __enable_shared_from_this. void @@ -1074,32 +1142,49 @@ namespace std _M_refcount = __refcount; } - template<typename _Tp1> - bool - _M_less(const __weak_ptr<_Tp1, _Lp>& __rhs) const - { return _M_refcount < __rhs._M_refcount; } - template<typename _Tp1, _Lock_policy _Lp1> friend class __shared_ptr; template<typename _Tp1, _Lock_policy _Lp1> friend class __weak_ptr; friend class __enable_shared_from_this<_Tp, _Lp>; friend class enable_shared_from_this<_Tp>; - // Friend injected into namespace and found by ADL. - template<typename _Tp1> - friend inline bool - operator<(const __weak_ptr& __lhs, const __weak_ptr<_Tp1, _Lp>& __rhs) - { return __lhs._M_less(__rhs); } - _Tp* _M_ptr; // Contained pointer. __weak_count<_Lp> _M_refcount; // Reference counter. }; - // 2.2.4.7 weak_ptr specialized algorithms. + // 20.8.13.3.7 weak_ptr specialized algorithms. template<typename _Tp, _Lock_policy _Lp> inline void swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) { __a.swap(__b); } + /// owner_less + template<typename _Tp> struct owner_less; + + template<typename _Tp, typename _Tp1> + struct _Sp_owner_less : public binary_function<_Tp, _Tp, bool> + { + bool + operator()(const _Tp& __lhs, const _Tp& __rhs) const + { return __lhs.owner_before(__rhs); } + bool + operator()(const _Tp& __lhs, const _Tp1& __rhs) const + { return __lhs.owner_before(__rhs); } + bool + operator()(const _Tp1& __lhs, const _Tp& __rhs) const + { return __lhs.owner_before(__rhs); } + }; + + template<typename _Tp, _Lock_policy _Lp> + struct owner_less<__shared_ptr<_Tp, _Lp>> + : public _Sp_owner_less<__shared_ptr<_Tp, _Lp>, __weak_ptr<_Tp, _Lp>> + { }; + + template<typename _Tp, _Lock_policy _Lp> + struct owner_less<__weak_ptr<_Tp, _Lp>> + : public _Sp_owner_less<__weak_ptr<_Tp, _Lp>, __shared_ptr<_Tp, _Lp>> + { + }; + template<typename _Tp, _Lock_policy _Lp> class __enable_shared_from_this @@ -1262,22 +1347,44 @@ namespace std allocate_shared(_Alloc __a, _Args&&... __args); }; - // 20.7.12.2.9 shared_ptr specialized algorithms. + // 20.8.13.2.7 shared_ptr comparisons + template<typename _Tp1, typename _Tp2> + inline bool + operator==(const shared_ptr<_Tp1>& __a, const shared_ptr<_Tp2>& __b) + { return __a.get() == __b.get(); } + + template<typename _Tp1, typename _Tp2> + inline bool + operator!=(const shared_ptr<_Tp1>& __a, const shared_ptr<_Tp2>& __b) + { return __a.get() != __b.get(); } + + template<typename _Tp1, typename _Tp2> + inline bool + operator<(const shared_ptr<_Tp1>& __a, const shared_ptr<_Tp2>& __b) + { return __a.get() < __b.get(); } + + template<typename _Tp> + struct less<shared_ptr<_Tp>> + : public _Sp_less<shared_ptr<_Tp>> + { }; + + // 20.8.13.2.9 shared_ptr specialized algorithms. template<typename _Tp> inline void - swap(__shared_ptr<_Tp>& __a, __shared_ptr<_Tp>& __b) + swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) { __a.swap(__b); } template<typename _Tp> inline void - swap(__shared_ptr<_Tp>&& __a, __shared_ptr<_Tp>& __b) + swap(shared_ptr<_Tp>&& __a, shared_ptr<_Tp>& __b) { __a.swap(__b); } template<typename _Tp> inline void - swap(__shared_ptr<_Tp>& __a, __shared_ptr<_Tp>&& __b) + swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>&& __b) { __a.swap(__b); } + // 20.8.13.2.10 shared_ptr casts. template<typename _Tp, typename _Tp1> inline shared_ptr<_Tp> static_pointer_cast(const shared_ptr<_Tp1>& __r) @@ -1353,8 +1460,35 @@ namespace std : shared_ptr<_Tp>(*this); #endif } + + // comparisons + template<typename _Tp1> + bool operator<(const weak_ptr<_Tp1>&) const = delete; + template<typename _Tp1> + bool operator<=(const weak_ptr<_Tp1>&) const = delete; + template<typename _Tp1> + bool operator>(const weak_ptr<_Tp1>&) const = delete; + template<typename _Tp1> + bool operator>=(const weak_ptr<_Tp1>&) const = delete; }; + // 20.8.13.3.7 weak_ptr specialized algorithms. + template<typename _Tp> + inline void + swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) + { __a.swap(__b); } + + /// owner_less + template<typename _Tp> + struct owner_less<shared_ptr<_Tp>> + : public _Sp_owner_less<shared_ptr<_Tp>, weak_ptr<_Tp>> + { }; + + template<typename _Tp> + struct owner_less<weak_ptr<_Tp>> + : public _Sp_owner_less<weak_ptr<_Tp>, shared_ptr<_Tp>> + { }; + /// enable_shared_from_this template<typename _Tp> class enable_shared_from_this diff --git a/libstdc++-v3/testsuite/20_util/owner_less/cmp.cc b/libstdc++-v3/testsuite/20_util/owner_less/cmp.cc new file mode 100644 index 00000000000..6369da77589 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/owner_less/cmp.cc @@ -0,0 +1,128 @@ +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2008 Free Software Foundation +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// 20.8.13.4 Template class owner_less [util.smartptr.ownerless] + +#include <memory> +#include <algorithm> +#include <testsuite_hooks.h> + +struct A { }; + +struct B { A a[2]; }; + +// 20.8.13.4 Template class owner_less [util.smartptr.ownerless] + +int +test01() +{ + // test empty shared_ptrs compare equivalent + std::owner_less<std::shared_ptr<A>> less; + std::owner_less<std::weak_ptr<A>> wless; + std::shared_ptr<A> p1; + std::shared_ptr<A> p2; + VERIFY( !less(p1, p2) && !less(p2, p1) ); + std::weak_ptr<A> p3; + VERIFY( !less(p1, p3) && !less(p3, p1) ); + VERIFY( !wless(p1, p3) && !wless(p3, p1) ); + return 0; +} + + +// Construction from pointer +int +test02() +{ + std::owner_less<std::shared_ptr<A>> less; + std::owner_less<std::weak_ptr<A>> wless; + + std::shared_ptr<A> empty; + + std::shared_ptr<A> a1(new A); + VERIFY( less(empty, a1) || less(a1, empty) ); + + std::shared_ptr<A> a2(new A); + VERIFY( less(a1, a2) || less(a2, a1) ); + + std::weak_ptr<A> w1(a1); + VERIFY( !less(a1, w1) && !less(w1, a1) ); + + std::weak_ptr<A> w2(a2); + VERIFY( wless(w1, w2) || wless(w2, w1) ); + + a1.reset(); + VERIFY( !less(empty, a1) && !less(a1, empty) ); + VERIFY( less(a1, w1) || less(w1, a1) ); + + a2.reset(); + VERIFY( !less(a2, a1) && !less(a1, a2) ); + + return 0; +} + +// aliasing +int +test03() +{ + std::owner_less<std::shared_ptr<A>> less; + std::owner_less<std::weak_ptr<A>> wless; + + std::shared_ptr<B> b(new B); + std::shared_ptr<A> a0(b, &b->a[0]); + std::shared_ptr<A> a1(b, &b->a[1]); + // values are different but owners are equivalent: + VERIFY( a0 < a1 && !less(a0, a1) && !less(a1, a0) ); + + std::weak_ptr<A> w0(a0); + std::weak_ptr<A> w1(a1); + VERIFY( !wless(w0, w1) && !wless(w1, w0) ); + VERIFY( !less(a0, w1) && !less(w1, a0) ); + VERIFY( !wless(w0, a1) && !wless(a1, w0) ); + + return 0; +} + +// strict weak ordering +int +test04() +{ + std::owner_less<std::shared_ptr<A>> less; + + std::shared_ptr<A> a[3]; + a[0].reset(new A); + a[1].reset(new A); + a[2].reset(new A); + std::sort(a, a+3, less); + VERIFY( !less(a[0], a[0]) ); + VERIFY( less(a[0], a[1]) && !less(a[1], a[0]) ); + VERIFY( less(a[0], a[1]) && less(a[1], a[2]) && less(a[0], a[2]) ); + + return 0; +} + +int +main() +{ + test01(); + test02(); + test03(); + test04(); + return 0; +} diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc index 55041f8ee81..8b623e1d8ea 100644 --- a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc +++ b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc @@ -76,10 +76,24 @@ test02() return 0; } +int +test03() +{ + std::shared_ptr<A> p1; + + // check other operators are defined + VERIFY( p1 <= p1 ); + VERIFY( p1 >= p1 ); + VERIFY( !(p1 > p1) ); + + return 0; +} + int main() { test01(); test02(); + test03(); return 0; } diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc new file mode 100644 index 00000000000..8e96b11c424 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc @@ -0,0 +1,97 @@ +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2008 Free Software Foundation +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// 20.8.13.2 Template class shared_ptr [util.smartptr.shared] + +#include <memory> +#include <testsuite_hooks.h> + +struct A { }; + +namespace std +{ + template<> + struct less<A*> : binary_function<A*,A*,bool> + { + static int count; + bool operator()(A* l, A* r) { ++count; return l < r; } + }; + int less<A*>::count = 0; +} + +// 20.8.13.2.7 shared_ptr comparison [util.smartptr.shared.cmp] + + +int +test01() +{ + std::less<std::shared_ptr<A>> less; + // test empty shared_ptrs compare equivalent + std::shared_ptr<A> p1; + std::shared_ptr<A> p2; + VERIFY( !less(p1, p2) && !less(p2, p1) ); + VERIFY( std::less<A*>::count == 2 ); + return 0; +} + + +// Construction from pointer +int +test02() +{ + std::less<std::shared_ptr<A>> less; + + std::shared_ptr<A> empty; + std::shared_ptr<A> p1(new A); + std::shared_ptr<A> p2(new A); + + VERIFY( less(p1, p2) || less(p2, p1) ); + VERIFY( !(less(p1, p2) && less(p2, p1)) ); + + p1.reset(); + VERIFY( !less(p1, empty) && !less(empty, p1) ); + + p2.reset(); + VERIFY( !less(p1, p2) && !less(p2, p1) ); + + return 0; +} + +// Aliasing +int +test03() +{ + std::less<std::shared_ptr<A>> less; + + A a; + std::shared_ptr<A> p1(new A); + std::shared_ptr<A> p2(p1, &a); + VERIFY( less(p1, p2) || less(p2, p1) ); + + return 0; +} +int +main() +{ + test01(); + test02(); + test03(); + return 0; +} diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc index 9efe26fc28c..77d830326a0 100644 --- a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc +++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc @@ -1,6 +1,6 @@ // { dg-options "-std=gnu++0x" } -// Copyright (C) 2005, 2006, 2007 Free Software Foundation +// Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -28,7 +28,7 @@ struct A { }; // 20.6.6.2.5 shared_ptr observers [util.smartptr.shared.obs] // conversion to bool -int +void test01() { bool test __attribute__((unused)) = true; @@ -37,11 +37,9 @@ test01() VERIFY( p1 == false ); const std::shared_ptr<A> p2(p1); VERIFY( p2 == false ); - - return 0; } -int +void test02() { bool test __attribute__((unused)) = true; @@ -53,11 +51,9 @@ test02() p1.reset(); VERIFY( !p1 ); VERIFY( p2 ); - - return 0; } -int +void test03() { bool test __attribute__((unused)) = true; @@ -67,8 +63,6 @@ test03() p2.reset(new A); VERIFY( p1 ); VERIFY( p2 ); - - return 0; } diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc index c64ed38fc70..55cd8cdb713 100644 --- a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc +++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc @@ -1,6 +1,6 @@ // { dg-options "-std=gnu++0x" } -// Copyright (C) 2005, 2006, 2007 Free Software Foundation +// Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -32,7 +32,7 @@ struct A // 20.6.6.2.5 shared_ptr observers [util.smartptr.shared.obs] // get -int +void test01() { bool test __attribute__((unused)) = true; @@ -40,12 +40,10 @@ test01() A * const a = new A; const std::shared_ptr<A> p(a); VERIFY( p.get() == a ); - - return 0; } // operator* -int +void test02() { bool test __attribute__((unused)) = true; @@ -53,13 +51,10 @@ test02() A * const a = new A; const std::shared_ptr<A> p(a); VERIFY( &*p == a ); - - return 0; } - // operator-> -int +void test03() { bool test __attribute__((unused)) = true; @@ -67,11 +62,8 @@ test03() A * const a = new A; const std::shared_ptr<A> p(a); VERIFY( &p->i == &a->i ); - - return 0; } - int main() { diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc new file mode 100644 index 00000000000..73d7724cfab --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc @@ -0,0 +1,95 @@ +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2008 Free Software Foundation +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// 20.8.13.2 Template class shared_ptr [util.smartptr.shared] + +#include <memory> +#include <testsuite_hooks.h> + +struct A +{ + int i; + virtual ~A() { } +}; + +struct B : A +{ +}; + +// 20.6.6.2.5 shared_ptr observers [util.smartptr.shared.obs] + +void +test01() +{ + bool test __attribute__((unused)) = true; + + // test empty shared_ptrs compare equivalent + std::shared_ptr<A> p1; + std::shared_ptr<B> p2; + VERIFY( !p1.owner_before(p2) && !p2.owner_before(p1) ); +} + + +// Construction from pointer +void +test02() +{ + bool test __attribute__((unused)) = true; + + std::shared_ptr<A> a0; + + std::shared_ptr<A> a1(new A); + VERIFY( a1.owner_before(a0) || a0.owner_before(a1) ); + VERIFY( !(a1.owner_before(a0) && a0.owner_before(a1)) ); + + std::shared_ptr<B> b1(new B); + VERIFY( a1.owner_before(b1) || b1.owner_before(a1) ); + VERIFY( !(a1.owner_before(b1) && b1.owner_before(a1)) ); + + std::shared_ptr<A> a2(a1); + VERIFY( !a1.owner_before(a2) && !a2.owner_before(a1) ); + a2 = b1; + VERIFY( !b1.owner_before(a2) && !a2.owner_before(b1) ); + + std::weak_ptr<A> w1(a1); + VERIFY( !a1.owner_before(w1) && !w1.owner_before(a1) ); + std::weak_ptr<A> w2(a2); + VERIFY( !b1.owner_before(w2) && !w2.owner_before(b1) ); +} + +// Aliasing +void +test03() +{ + bool test __attribute__((unused)) = true; + + std::shared_ptr<A> p1(new A()); + std::shared_ptr<int> p2(p1, &p1->i); + VERIFY( !p1.owner_before(p2) && !p2.owner_before(p1) ); +} + +int +main() +{ + test01(); + test02(); + test03(); + return 0; +} diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc index de7ab15a7b0..c619705af5a 100644 --- a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc +++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc @@ -1,6 +1,6 @@ // { dg-options "-std=gnu++0x" } -// Copyright (C) 2005, 2006, 2007 Free Software Foundation +// Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -28,7 +28,7 @@ struct A { }; // 20.6.6.2.5 shared_ptr observers [util.smartptr.shared.obs] // unique -int +void test01() { bool test __attribute__((unused)) = true; @@ -37,11 +37,9 @@ test01() VERIFY( !p1.unique() ); const std::shared_ptr<A> p2(p1); VERIFY( !p1.unique() ); - - return 0; } -int +void test02() { bool test __attribute__((unused)) = true; @@ -53,11 +51,9 @@ test02() p1.reset(); VERIFY( !p1.unique() ); VERIFY( p2.unique() ); - - return 0; } -int +void test03() { bool test __attribute__((unused)) = true; @@ -67,8 +63,6 @@ test03() p2.reset(new A); VERIFY( p1.unique() ); VERIFY( p2.unique() ); - - return 0; } diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc index 8e074a8b888..e2666c5e880 100644 --- a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc +++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc @@ -1,6 +1,6 @@ // { dg-options "-std=gnu++0x" } -// Copyright (C) 2005, 2006, 2007 Free Software Foundation +// Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -29,7 +29,7 @@ struct B : A { }; // 20.6.6.2.5 shared_ptr observers [util.smartptr.shared.obs] // use_count -int +void test01() { bool test __attribute__((unused)) = true; @@ -38,11 +38,9 @@ test01() VERIFY( p1.use_count() == 0 ); const std::shared_ptr<A> p2(p1); VERIFY( p1.use_count() == 0 ); - - return 0; } -int +void test02() { bool test __attribute__((unused)) = true; @@ -52,11 +50,9 @@ test02() p1.reset(); VERIFY( p1.use_count() == 0 ); VERIFY( p2.use_count() == 1 ); - - return 0; } -int +void test03() { bool test __attribute__((unused)) = true; @@ -66,8 +62,6 @@ test03() p2.reset(new B); VERIFY( p1.use_count() == 1 ); VERIFY( p2.use_count() == 1 ); - - return 0; } diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc new file mode 100644 index 00000000000..aa7399f3cba --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc @@ -0,0 +1,45 @@ +// { dg-options "-std=gnu++0x " } +// { dg-do compile } + +// Copyright (C) 2008 Free Software Foundation +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// 20.6.6.3 Template class weak_ptr [util.smartptr.weak] + +#include <memory> +#include <testsuite_hooks.h> + +struct A { }; + +// 20.8.13.3.6 weak_ptr comparison [util.smartptr.weak.cmp] (removed) + +int +test01() +{ + std::weak_ptr<A> p1; + // { dg-excess-errors "deleted function" } + p1 < p1; // { dg-error "used here" } + return 0; +} + +int +main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc new file mode 100644 index 00000000000..52e1199b05d --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc @@ -0,0 +1,74 @@ +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2008 Free Software Foundation +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// 20.8.13.3 Template class weak_ptr [util.smartptr.weak] + +#include <memory> +#include <testsuite_hooks.h> + +struct A { }; +struct B { }; + +// 20.6.6.3.5 weak_ptr observers [util.smartptr.weak.obs] + +int +test01() +{ + // test empty weak_ptrs compare equivalent + std::weak_ptr<A> p1; + std::weak_ptr<B> p2; + VERIFY( !p1.owner_before(p2) && !p2.owner_before(p1) ); + + std::shared_ptr<B> p3; + VERIFY( !p1.owner_before(p3) && !p3.owner_before(p1) ); + + return 0; +} + + +int +test02() +{ + std::shared_ptr<A> a0; + std::weak_ptr<A> w0(a0); + + std::shared_ptr<A> a1(new A); + std::weak_ptr<A> w1(a1); + VERIFY( !a1.owner_before(w1) && !w1.owner_before(a1) ); + + VERIFY( w1.owner_before(w0) || w0.owner_before(w1) ); + VERIFY( !(w1.owner_before(w0) && w0.owner_before(w1)) ); + + VERIFY( w1.owner_before(a0) || a0.owner_before(w1) ); + VERIFY( !(w1.owner_before(a0) && a0.owner_before(w1)) ); + + std::shared_ptr<B> b1(new B); + VERIFY( w1.owner_before(b1) || b1.owner_before(w1) ); + + return 0; +} + +int +main() +{ + test01(); + test02(); + return 0; +} diff --git a/libstdc++-v3/testsuite/22_locale/num_get/get/char/37958.cc b/libstdc++-v3/testsuite/22_locale/num_get/get/char/37958.cc new file mode 100644 index 00000000000..fe8161c31d5 --- /dev/null +++ b/libstdc++-v3/testsuite/22_locale/num_get/get/char/37958.cc @@ -0,0 +1,197 @@ +// 2008-10-31 Paolo Carlini <paolo.carlini@oracle.com> + +// Copyright (C) 2008 Free Software Foundation +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// 22.2.2.1.1 num_get members + +#include <locale> +#include <sstream> +#include <testsuite_hooks.h> + +struct Punct1: std::numpunct<char> +{ + std::string do_truename() const { return "a"; } + std::string do_falsename() const { return "abb"; } +}; + +struct Punct2: std::numpunct<char> +{ + std::string do_truename() const { return "1"; } + std::string do_falsename() const { return "0"; } +}; + +struct Punct3: std::numpunct<char> +{ + std::string do_truename() const { return ""; } + std::string do_falsename() const { return ""; } +}; + +struct Punct4: std::numpunct<char> +{ + std::string do_truename() const { return "one"; } + std::string do_falsename() const { return "two"; } +}; + +// libstdc++/37958 +void test01() +{ + using namespace std; + typedef istreambuf_iterator<char> iterator_type; + + bool test __attribute__((unused)) = true; + + istringstream iss0, iss1, iss2, iss3, iss4; + iss1.imbue(locale(iss1.getloc(), new Punct1)); + iss2.imbue(locale(iss2.getloc(), new Punct2)); + iss3.imbue(locale(iss3.getloc(), new Punct3)); + iss4.imbue(locale(iss4.getloc(), new Punct4)); + const num_get<char>& ng0 = use_facet<num_get<char> >(iss0.getloc()); + const num_get<char>& ng1 = use_facet<num_get<char> >(iss1.getloc()); + const num_get<char>& ng2 = use_facet<num_get<char> >(iss2.getloc()); + const num_get<char>& ng3 = use_facet<num_get<char> >(iss3.getloc()); + const num_get<char>& ng4 = use_facet<num_get<char> >(iss4.getloc()); + + ios_base::iostate err = ios_base::goodbit; + iterator_type end; + bool b0 = false; + bool b1 = false; + bool b2 = false; + bool b3 = true; + bool b4 = false; + + iss0.str("true"); + iss0.setf(ios_base::boolalpha); + err = ios_base::goodbit; + end = ng0.get(iss0.rdbuf(), 0, iss0, err, b0); + VERIFY( err == ios_base::goodbit ); + VERIFY( b0 == true ); + + iss0.str("false"); + iss0.clear(); + err = ios_base::goodbit; + end = ng0.get(iss0.rdbuf(), 0, iss0, err, b0); + VERIFY( err == ios_base::goodbit ); + VERIFY( b0 == false ); + + iss1.str("a"); + iss1.setf(ios_base::boolalpha); + err = ios_base::goodbit; + end = ng1.get(iss1.rdbuf(), 0, iss1, err, b1); + VERIFY( err == ios_base::eofbit ); + VERIFY( b1 == true ); + + iss1.str("abb"); + iss1.clear(); + err = ios_base::goodbit; + end = ng1.get(iss1.rdbuf(), 0, iss1, err, b1); + VERIFY( err == ios_base::goodbit ); + VERIFY( b1 == false ); + + iss1.str("abc"); + iss1.clear(); + err = ios_base::goodbit; + end = ng1.get(iss1.rdbuf(), 0, iss1, err, b1); + VERIFY( err == ios_base::failbit ); + VERIFY( b1 == false ); + VERIFY( *end == 'c' ); + + iss1.str("ab"); + iss1.clear(); + b1 = true; + err = ios_base::goodbit; + end = ng1.get(iss1.rdbuf(), 0, iss1, err, b1); + VERIFY( err == (ios_base::failbit | ios_base::eofbit) ); + VERIFY( b1 == false ); + + iss2.str("1"); + iss2.setf(ios_base::boolalpha); + err = ios_base::goodbit; + end = ng2.get(iss2.rdbuf(), 0, iss2, err, b2); + VERIFY( err == ios_base::goodbit ); + VERIFY( b2 == true ); + + iss2.str("0"); + iss2.clear(); + err = ios_base::goodbit; + end = ng2.get(iss2.rdbuf(), 0, iss2, err, b2); + VERIFY( err == ios_base::goodbit ); + VERIFY( b2 == false ); + + iss2.str("2"); + iss2.clear(); + b2 = true; + err = ios_base::goodbit; + end = ng2.get(iss2.rdbuf(), 0, iss2, err, b2); + VERIFY( err == ios_base::failbit ); + VERIFY( b2 == false ); + VERIFY( *end == '2' ); + + iss3.str("blah"); + iss3.setf(ios_base::boolalpha); + err = ios_base::goodbit; + end = ng3.get(iss3.rdbuf(), 0, iss3, err, b3); + VERIFY( err == ios_base::failbit ); + VERIFY( b3 == false ); + VERIFY( *end == 'b' ); + + iss3.str(""); + iss3.clear(); + b3 = true; + err = ios_base::goodbit; + end = ng3.get(iss3.rdbuf(), 0, iss3, err, b3); + VERIFY( err == ios_base::failbit ); + VERIFY( b3 == false ); + + iss4.str("one"); + iss4.setf(ios_base::boolalpha); + err = ios_base::goodbit; + end = ng4.get(iss4.rdbuf(), 0, iss4, err, b4); + VERIFY( err == ios_base::goodbit ); + VERIFY( b4 == true ); + + iss4.str("two"); + iss4.clear(); + err = ios_base::goodbit; + end = ng4.get(iss4.rdbuf(), 0, iss4, err, b4); + VERIFY( err == ios_base::goodbit ); + VERIFY( b4 == false ); + + iss4.str("three"); + iss4.clear(); + b4 = true; + err = ios_base::goodbit; + end = ng4.get(iss4.rdbuf(), 0, iss4, err, b4); + VERIFY( err == ios_base::failbit ); + VERIFY( b4 == false ); + VERIFY( *end == 'h' ); + + iss4.str("on"); + iss4.clear(); + b4 = true; + err = ios_base::goodbit; + end = ng4.get(iss4.rdbuf(), 0, iss4, err, b4); + VERIFY( err == (ios_base::failbit | ios_base::eofbit) ); + VERIFY( b4 == false ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/37958.cc b/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/37958.cc new file mode 100644 index 00000000000..e48024510e0 --- /dev/null +++ b/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/37958.cc @@ -0,0 +1,197 @@ +// 2008-10-31 Paolo Carlini <paolo.carlini@oracle.com> + +// Copyright (C) 2008 Free Software Foundation +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// 22.2.2.1.1 num_get members + +#include <locale> +#include <sstream> +#include <testsuite_hooks.h> + +struct Punct1: std::numpunct<wchar_t> +{ + std::wstring do_truename() const { return L"a"; } + std::wstring do_falsename() const { return L"abb"; } +}; + +struct Punct2: std::numpunct<wchar_t> +{ + std::wstring do_truename() const { return L"1"; } + std::wstring do_falsename() const { return L"0"; } +}; + +struct Punct3: std::numpunct<wchar_t> +{ + std::wstring do_truename() const { return L""; } + std::wstring do_falsename() const { return L""; } +}; + +struct Punct4: std::numpunct<wchar_t> +{ + std::wstring do_truename() const { return L"one"; } + std::wstring do_falsename() const { return L"two"; } +}; + +// libstdc++/37958 +void test01() +{ + using namespace std; + typedef istreambuf_iterator<wchar_t> iterator_type; + + bool test __attribute__((unused)) = true; + + wistringstream iss0, iss1, iss2, iss3, iss4; + iss1.imbue(locale(iss1.getloc(), new Punct1)); + iss2.imbue(locale(iss2.getloc(), new Punct2)); + iss3.imbue(locale(iss3.getloc(), new Punct3)); + iss4.imbue(locale(iss4.getloc(), new Punct4)); + const num_get<wchar_t>& ng0 = use_facet<num_get<wchar_t> >(iss0.getloc()); + const num_get<wchar_t>& ng1 = use_facet<num_get<wchar_t> >(iss1.getloc()); + const num_get<wchar_t>& ng2 = use_facet<num_get<wchar_t> >(iss2.getloc()); + const num_get<wchar_t>& ng3 = use_facet<num_get<wchar_t> >(iss3.getloc()); + const num_get<wchar_t>& ng4 = use_facet<num_get<wchar_t> >(iss4.getloc()); + + ios_base::iostate err = ios_base::goodbit; + iterator_type end; + bool b0 = false; + bool b1 = false; + bool b2 = false; + bool b3 = true; + bool b4 = false; + + iss0.str(L"true"); + iss0.setf(ios_base::boolalpha); + err = ios_base::goodbit; + end = ng0.get(iss0.rdbuf(), 0, iss0, err, b0); + VERIFY( err == ios_base::goodbit ); + VERIFY( b0 == true ); + + iss0.str(L"false"); + iss0.clear(); + err = ios_base::goodbit; + end = ng0.get(iss0.rdbuf(), 0, iss0, err, b0); + VERIFY( err == ios_base::goodbit ); + VERIFY( b0 == false ); + + iss1.str(L"a"); + iss1.setf(ios_base::boolalpha); + err = ios_base::goodbit; + end = ng1.get(iss1.rdbuf(), 0, iss1, err, b1); + VERIFY( err == ios_base::eofbit ); + VERIFY( b1 == true ); + + iss1.str(L"abb"); + iss1.clear(); + err = ios_base::goodbit; + end = ng1.get(iss1.rdbuf(), 0, iss1, err, b1); + VERIFY( err == ios_base::goodbit ); + VERIFY( b1 == false ); + + iss1.str(L"abc"); + iss1.clear(); + err = ios_base::goodbit; + end = ng1.get(iss1.rdbuf(), 0, iss1, err, b1); + VERIFY( err == ios_base::failbit ); + VERIFY( b1 == false ); + VERIFY( *end == L'c' ); + + iss1.str(L"ab"); + iss1.clear(); + b1 = true; + err = ios_base::goodbit; + end = ng1.get(iss1.rdbuf(), 0, iss1, err, b1); + VERIFY( err == (ios_base::failbit | ios_base::eofbit) ); + VERIFY( b1 == false ); + + iss2.str(L"1"); + iss2.setf(ios_base::boolalpha); + err = ios_base::goodbit; + end = ng2.get(iss2.rdbuf(), 0, iss2, err, b2); + VERIFY( err == ios_base::goodbit ); + VERIFY( b2 == true ); + + iss2.str(L"0"); + iss2.clear(); + err = ios_base::goodbit; + end = ng2.get(iss2.rdbuf(), 0, iss2, err, b2); + VERIFY( err == ios_base::goodbit ); + VERIFY( b2 == false ); + + iss2.str(L"2"); + iss2.clear(); + b2 = true; + err = ios_base::goodbit; + end = ng2.get(iss2.rdbuf(), 0, iss2, err, b2); + VERIFY( err == ios_base::failbit ); + VERIFY( b2 == false ); + VERIFY( *end == L'2' ); + + iss3.str(L"blah"); + iss3.setf(ios_base::boolalpha); + err = ios_base::goodbit; + end = ng3.get(iss3.rdbuf(), 0, iss3, err, b3); + VERIFY( err == ios_base::failbit ); + VERIFY( b3 == false ); + VERIFY( *end == L'b' ); + + iss3.str(L""); + iss3.clear(); + b3 = true; + err = ios_base::goodbit; + end = ng3.get(iss3.rdbuf(), 0, iss3, err, b3); + VERIFY( err == ios_base::failbit ); + VERIFY( b3 == false ); + + iss4.str(L"one"); + iss4.setf(ios_base::boolalpha); + err = ios_base::goodbit; + end = ng4.get(iss4.rdbuf(), 0, iss4, err, b4); + VERIFY( err == ios_base::goodbit ); + VERIFY( b4 == true ); + + iss4.str(L"two"); + iss4.clear(); + err = ios_base::goodbit; + end = ng4.get(iss4.rdbuf(), 0, iss4, err, b4); + VERIFY( err == ios_base::goodbit ); + VERIFY( b4 == false ); + + iss4.str(L"three"); + iss4.clear(); + b4 = true; + err = ios_base::goodbit; + end = ng4.get(iss4.rdbuf(), 0, iss4, err, b4); + VERIFY( err == ios_base::failbit ); + VERIFY( b4 == false ); + VERIFY( *end == L'h' ); + + iss4.str(L"on"); + iss4.clear(); + b4 = true; + err = ios_base::goodbit; + end = ng4.get(iss4.rdbuf(), 0, iss4, err, b4); + VERIFY( err == (ios_base::failbit | ios_base::eofbit) ); + VERIFY( b4 == false ); +} + +int main() +{ + test01(); + return 0; +} |