summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2008-11-03 20:17:38 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2008-11-03 20:17:38 +0000
commit2b2b3bd8d96c3193c8d9bc606ee1b5b3c9b47000 (patch)
tree81e969bd3646dc338eed81f44730a7c467aebe3b
parentd4f000ef87b18faf42726f23e17b15a8f14fe618 (diff)
downloadgcc-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
-rw-r--r--ChangeLog9
-rw-r--r--ChangeLog.melt3
-rw-r--r--MAINTAINERS2
-rwxr-xr-xconfigure2
-rw-r--r--configure.ac2
-rw-r--r--gcc/ChangeLog141
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/gcc-interface/Makefile.in55
-rw-r--r--gcc/builtins.c6
-rw-r--r--gcc/cfghooks.c11
-rw-r--r--gcc/config/avr/avr.c35
-rw-r--r--gcc/config/avr/avr.md186
-rw-r--r--gcc/config/bfin/bfin.c41
-rw-r--r--gcc/config/cris/cris.c15
-rw-r--r--gcc/config/rs6000/crtsavres.asm306
-rw-r--r--gcc/config/rs6000/rs6000.c3
-rw-r--r--gcc/config/s390/s390.c19
-rwxr-xr-xgcc/configure1432
-rw-r--r--gcc/configure.ac105
-rw-r--r--gcc/cp/ChangeLog11
-rw-r--r--gcc/cp/decl.c49
-rw-r--r--gcc/fortran/ChangeLog126
-rw-r--r--gcc/fortran/arith.c24
-rw-r--r--gcc/fortran/arith.h2
-rw-r--r--gcc/fortran/array.c9
-rw-r--r--gcc/fortran/check.c15
-rw-r--r--gcc/fortran/cpp.c3
-rw-r--r--gcc/fortran/decl.c1
-rw-r--r--gcc/fortran/expr.c79
-rw-r--r--gcc/fortran/gfortran.h6
-rw-r--r--gcc/fortran/intrinsic.c1
-rw-r--r--gcc/fortran/invoke.texi30
-rw-r--r--gcc/fortran/io.c2
-rw-r--r--gcc/fortran/iresolve.c38
-rw-r--r--gcc/fortran/lang-specs.h2
-rw-r--r--gcc/fortran/lang.opt4
-rw-r--r--gcc/fortran/match.h1
-rw-r--r--gcc/fortran/options.c15
-rw-r--r--gcc/fortran/resolve.c162
-rw-r--r--gcc/fortran/scanner.c34
-rw-r--r--gcc/fortran/simplify.c10
-rw-r--r--gcc/fortran/symbol.c3
-rw-r--r--gcc/fortran/trans-array.c108
-rw-r--r--gcc/fortran/trans-array.h2
-rw-r--r--gcc/fortran/trans-expr.c9
-rw-r--r--gcc/fortran/trans-intrinsic.c2
-rw-r--r--gcc/fortran/trans-stmt.c43
-rw-r--r--gcc/fortran/trans.c10
-rw-r--r--gcc/fortran/trans.h3
-rw-r--r--gcc/gcc.h2
-rw-r--r--gcc/graphite.c29
-rw-r--r--gcc/passes.c1
-rw-r--r--gcc/po/ChangeLog8
-rw-r--r--gcc/po/id.po2403
-rw-r--r--gcc/testsuite/ChangeLog164
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto7.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/auto8.C16
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20081101-1.c12
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr37976.c6
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr37991.c14
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr37573.c65
-rw-r--r--gcc/testsuite/gcc.dg/cpp/Wsignprom.c16
-rw-r--r--gcc/testsuite/gcc.dg/cpp/if-mpar.c18
-rw-r--r--gcc/testsuite/gcc.dg/graphite/pr37684.c65
-rw-r--r--gcc/testsuite/gcc.dg/pr37858.c11
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr36908.c65
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-22.c13
-rw-r--r--gcc/testsuite/gcc.target/cris/biap.c11
-rw-r--r--gcc/testsuite/gfortran.dg/host_assoc_call_3.f9044
-rw-r--r--gcc/testsuite/gfortran.dg/host_assoc_call_4.f9048
-rw-r--r--gcc/testsuite/gfortran.dg/host_assoc_function_4.f9030
-rw-r--r--gcc/testsuite/gfortran.dg/include_4.f9012
-rw-r--r--gcc/testsuite/gfortran.dg/include_4.inc4
-rw-r--r--gcc/testsuite/gfortran.dg/include_5.f9018
-rw-r--r--gcc/testsuite/gfortran.dg/initialization_20.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/initialization_21.f9011
-rw-r--r--gcc/testsuite/gfortran.dg/int_conv_2.f907
-rw-r--r--gcc/testsuite/gfortran.dg/mvbits_4.f9033
-rw-r--r--gcc/testsuite/gfortran.dg/nested_forall_1.f38
-rw-r--r--gcc/testsuite/gfortran.dg/proc_decl_17.f9068
-rw-r--r--gcc/testsuite/gfortran.dg/proc_decl_18.f9063
-rw-r--r--gcc/testsuite/gfortran.dg/proc_decl_19.f9023
-rw-r--r--gcc/testsuite/gfortran.dg/random_seed_1.f9014
-rw-r--r--gcc/testsuite/gfortran.dg/write_check4.f9017
-rw-r--r--gcc/tree-data-ref.c1
-rw-r--r--gcc/tree-loop-distribution.c61
-rw-r--r--gcc/tree-ssa-pre.c55
-rw-r--r--gcc/tree-ssa-sccvn.c33
-rw-r--r--gcc/tree-ssa-sccvn.h1
-rw-r--r--libcpp/ChangeLog8
-rw-r--r--libcpp/expr.c31
-rw-r--r--libgfortran/ChangeLog7
-rw-r--r--libgfortran/intrinsics/random.c21
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/Makefile.am23
-rw-r--r--libjava/Makefile.in25
-rw-r--r--libstdc++-v3/ChangeLog74
-rw-r--r--libstdc++-v3/include/bits/locale_facets.h49
-rw-r--r--libstdc++-v3/include/bits/locale_facets.tcc151
-rw-r--r--libstdc++-v3/include/bits/shared_ptr.h250
-rw-r--r--libstdc++-v3/testsuite/20_util/owner_less/cmp.cc128
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc14
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc97
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc14
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc16
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc95
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc14
-rw-r--r--libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc14
-rw-r--r--libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc45
-rw-r--r--libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc74
-rw-r--r--libstdc++-v3/testsuite/22_locale/num_get/get/char/37958.cc197
-rw-r--r--libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/37958.cc197
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;
+}