aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2009-08-10 12:28:53 +0000
committerRichard Earnshaw <rearnsha@arm.com>2009-08-10 12:28:53 +0000
commit515a2d9dddc5c9ec2e5fb352d28b2e8adb144346 (patch)
treeaba3a1c247b899eead6f35d2a27fdf5983eec3b6
parent94294700e714a81f4eb2de568f387c76daa9ed51 (diff)
parent3f5d156f28c24193e4046f35cc32d900fa6be9d6 (diff)
Merge gcc-4.4-branch through r150619.ARM/hard_vfp_4_4_branch
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/ARM/hard_vfp_4_4_branch@150624 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog44
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/config/alpha/alpha.c13
-rw-r--r--gcc/config/arm/arm.md4
-rw-r--r--gcc/config/i386/i386.c21
-rw-r--r--gcc/cp/ChangeLog25
-rw-r--r--gcc/cp/error.c5
-rw-r--r--gcc/cp/init.c28
-rw-r--r--gcc/cp/pt.c4
-rw-r--r--gcc/dse.c116
-rw-r--r--gcc/po/ChangeLog4
-rw-r--r--gcc/po/es.po286
-rw-r--r--gcc/simplify-rtx.c1
-rw-r--r--gcc/testsuite/ChangeLog85
-rw-r--r--gcc/testsuite/ada/acats/support/impdef.a6
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c940005.a2
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c940007.a2
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c94001c.ada4
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c94006a.ada2
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c94008c.ada4
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c951002.a8
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c954a01.a4
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c96001a.ada2
-rw-r--r--gcc/testsuite/ada/acats/tests/c9/c97307a.ada4
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C14
-rw-r--r--gcc/testsuite/g++.dg/ext/complit12.C65
-rw-r--r--gcc/testsuite/g++.dg/overload/defarg4.C26
-rw-r--r--gcc/testsuite/g++.dg/torture/pr40834.C52
-rw-r--r--gcc/testsuite/g++.dg/torture/pr40924.C111
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr40570.c22
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr41016.c17
-rw-r--r--gcc/testsuite/gcc.dg/uninit-6-O0.c2
-rw-r--r--gcc/testsuite/gcc.dg/uninit-6.c2
-rw-r--r--gcc/testsuite/gcc.dg/uninit-pr40943.c10
-rw-r--r--gcc/testsuite/gcc.target/i386/pr40906-1.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/pr40906-2.c26
-rw-r--r--gcc/testsuite/gcc.target/i386/pr40906-3.c25
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr39902-2.c28
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_40.f904
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_47.f904
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_58.f9025
-rw-r--r--gcc/tree-ssa-ifcombine.c31
-rw-r--r--gcc/tree-ssa.c7
-rw-r--r--libcpp/po/ChangeLog4
-rw-r--r--libcpp/po/es.po10
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/list_read.c2
47 files changed, 921 insertions, 274 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1fe71240bf1..25bb473205b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,47 @@
+2009-08-09 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/41016
+ * tree-ssa-ifcombine.c (get_name_for_bit_test): Fix tuplification
+ bug.
+ (operand_precision): Remove.
+ (integral_operand_p): Likewise.
+ (recognize_single_bit_test): Adjust.
+
+2009-08-05 Uros Bizjak <ubizjak@gmail.com>
+ Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
+
+ PR target/40906
+ * config/i386/i386.c (ix86_split_long_move): Fix push of multi-part
+ source operand.
+
+2009-08-05 Richard Earnshaw <rearnsha@arm.com>
+
+ * arm.md (movdi2): Copy non-reg values to DImode registers.
+
+2009-08-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/40924
+ * dse.c (canon_address): Before calling cselib_expand_value_rtx
+ make sure canon_rtx (mem_address) isn't simpler than
+ canon_rtx (expanded_mem_address).
+
+2009-08-03 Janis Johnson <janis187@us.ibm.com>
+
+ PR c/39902
+ * simplify-rtx.c (simplify_binary_operation_1): Disable
+ simplifications for decimal float operations.
+
+2009-08-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/40943
+ * tree-ssa.c (warn_uninitialized_var): Even on LHS warn for
+ operand of INDIRECT_REF.
+
+2009-08-03 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/alpha/alpha.c (alpha_legitimate_constant_p): Reject CONST
+ constants referencing TLS symbols.
+
2009-07-30 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390.c (override_options): Default
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index f5d90992ac8..b1425753fd2 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20090801
+20090810
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 21b4342a556..c6182dc6181 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -2052,11 +2052,22 @@ alpha_legitimate_constant_p (rtx x)
switch (GET_CODE (x))
{
- case CONST:
case LABEL_REF:
case HIGH:
return true;
+ case CONST:
+ if (GET_CODE (XEXP (x, 0)) == PLUS
+ && GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT)
+ x = XEXP (XEXP (x, 0), 0);
+ else
+ return true;
+
+ if (GET_CODE (x) != SYMBOL_REF)
+ return true;
+
+ /* FALLTHRU */
+
case SYMBOL_REF:
/* TLS symbols are never valid. */
return SYMBOL_REF_TLS_MODEL (x) == 0;
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index 5a27f676833..f2b7a7d1b82 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -472,9 +472,9 @@
if (TARGET_THUMB1)
{
if (GET_CODE (operands[1]) != REG)
- operands[1] = force_reg (SImode, operands[1]);
+ operands[1] = force_reg (DImode, operands[1]);
if (GET_CODE (operands[2]) != REG)
- operands[2] = force_reg (SImode, operands[2]);
+ operands[2] = force_reg (DImode, operands[2]);
}
"
)
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index b8e40b7d320..6751ad002b5 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -16309,10 +16309,20 @@ ix86_split_long_move (rtx operands[])
/* When emitting push, take care for source operands on the stack. */
if (push && MEM_P (operands[1])
&& reg_overlap_mentioned_p (stack_pointer_rtx, operands[1]))
- for (i = 0; i < nparts - 1; i++)
- part[1][i] = change_address (part[1][i],
- GET_MODE (part[1][i]),
- XEXP (part[1][i + 1], 0));
+ {
+ rtx src_base = XEXP (part[1][nparts - 1], 0);
+
+ /* Compensate for the stack decrement by 4. */
+ if (!TARGET_64BIT && nparts == 3
+ && mode == XFmode && TARGET_128BIT_LONG_DOUBLE)
+ src_base = plus_constant (src_base, 4);
+
+ /* src_base refers to the stack pointer and is
+ automatically decreased by emitted push. */
+ for (i = 0; i < nparts; i++)
+ part[1][i] = change_address (part[1][i],
+ GET_MODE (part[1][i]), src_base);
+ }
/* We need to do copy in the right order in case an address register
of the source overlaps the destination. */
@@ -16382,7 +16392,8 @@ ix86_split_long_move (rtx operands[])
if (nparts == 3)
{
if (TARGET_128BIT_LONG_DOUBLE && mode == XFmode)
- emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, GEN_INT (-4)));
+ emit_insn (gen_addsi3 (stack_pointer_rtx,
+ stack_pointer_rtx, GEN_INT (-4)));
emit_move_insn (part[0][2], part[1][2]);
}
else if (nparts == 4)
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index fbe0f2ba647..0eac68b6581 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,28 @@
+2009-08-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/40948
+ * init.c (build_vec_init): Evaluate the initializer before
+ starting the initialization try block.
+
+2009-08-04 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/39987
+ * pt.c (tsubst_default_argument): Let access checks of the
+ default argument happen in the context of the current function.
+
+2009-08-04 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/39706
+ * error.c (lang_decl_name): Print qualified names for decls
+ in namespace scope.
+
+2009-08-03 Jason Merrill <jason@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/40948
+ * init.c (build_vec_init): Look through a TARGET_EXPR around a
+ CONSTRUCTOR.
+
2009-07-26 Simon Martin <simartin@users.sourceforge.net>
PR c++/40749
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index cc4b92992ca..aebd65f31d4 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -2181,7 +2181,10 @@ lang_decl_name (tree decl, int v)
return decl_as_string (decl, TFF_DECL_SPECIFIERS);
reinit_cxx_pp ();
- if (v == 1 && DECL_CLASS_SCOPE_P (decl))
+ if (v == 1
+ && (DECL_CLASS_SCOPE_P (decl)
+ || (DECL_NAMESPACE_SCOPE_P (decl)
+ && CP_DECL_CONTEXT (decl) != global_namespace)))
{
dump_type (CP_DECL_CONTEXT (decl), TFF_PLAIN_IDENTIFIER);
pp_cxx_colon_colon (cxx_pp);
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 0632cb0c1a3..d31c10037a7 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -2695,6 +2695,13 @@ build_vec_init (tree base, tree maxindex, tree init,
gcc_assert (!init);
inner_elt_type = strip_array_types (type);
+
+ /* Look through the TARGET_EXPR around a compound literal. */
+ if (init && TREE_CODE (init) == TARGET_EXPR
+ && TREE_CODE (TARGET_EXPR_INITIAL (init)) == CONSTRUCTOR
+ && from_array != 2)
+ init = TARGET_EXPR_INITIAL (init);
+
if (init
&& TREE_CODE (atype) == ARRAY_TYPE
&& (from_array == 2
@@ -2763,6 +2770,17 @@ build_vec_init (tree base, tree maxindex, tree init,
base = get_temp_regvar (ptype, rval);
iterator = get_temp_regvar (ptrdiff_type_node, maxindex);
+ /* If initializing one array from another, initialize element by
+ element. We rely upon the below calls to do the argument
+ checking. Evaluate the initializer before entering the try block. */
+ if (from_array && init && TREE_CODE (init) != CONSTRUCTOR)
+ {
+ base2 = decay_conversion (init);
+ itype = TREE_TYPE (base2);
+ base2 = get_temp_regvar (itype, base2);
+ itype = TREE_TYPE (itype);
+ }
+
/* Protect the entire array initialization so that we can destroy
the partially constructed array if an exception is thrown.
But don't do this if we're assigning. */
@@ -2805,16 +2823,8 @@ build_vec_init (tree base, tree maxindex, tree init,
}
else if (from_array)
{
- /* If initializing one array from another, initialize element by
- element. We rely upon the below calls the do argument
- checking. */
if (init)
- {
- base2 = decay_conversion (init);
- itype = TREE_TYPE (base2);
- base2 = get_temp_regvar (itype, base2);
- itype = TREE_TYPE (itype);
- }
+ /* OK, we set base2 above. */;
else if (TYPE_LANG_SPECIFIC (type)
&& TYPE_NEEDS_CONSTRUCTING (type)
&& ! TYPE_HAS_DEFAULT_CONSTRUCTOR (type))
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 3754e2bdb85..58d7016d882 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -8007,11 +8007,11 @@ tsubst_default_argument (tree fn, tree type, tree arg)
cp_function_chain->x_current_class_ref = saved_class_ref;
}
- pop_access_scope (fn);
-
/* Make sure the default argument is reasonable. */
arg = check_default_argument (type, arg);
+ pop_access_scope (fn);
+
return arg;
}
diff --git a/gcc/dse.c b/gcc/dse.c
index 3298b4f0754..f7a1cbb007a 100644
--- a/gcc/dse.c
+++ b/gcc/dse.c
@@ -1070,6 +1070,8 @@ canon_address (rtx mem,
{
rtx mem_address = XEXP (mem, 0);
rtx expanded_address, address;
+ int expanded;
+
/* Make sure that cselib is has initialized all of the operands of
the address before asking it to do the subst. */
@@ -1114,72 +1116,88 @@ canon_address (rtx mem,
fprintf (dump_file, "\n");
}
- /* Use cselib to replace all of the reg references with the full
- expression. This will take care of the case where we have
+ /* First see if just canon_rtx (mem_address) is const or frame,
+ if not, try cselib_expand_value_rtx and call canon_rtx on that. */
+ address = NULL_RTX;
+ for (expanded = 0; expanded < 2; expanded++)
+ {
+ if (expanded)
+ {
+ /* Use cselib to replace all of the reg references with the full
+ expression. This will take care of the case where we have
- r_x = base + offset;
- val = *r_x;
+ r_x = base + offset;
+ val = *r_x;
- by making it into
-
- val = *(base + offset);
- */
-
- expanded_address = cselib_expand_value_rtx (mem_address, scratch, 5);
+ by making it into
- /* If this fails, just go with the mem_address. */
- if (!expanded_address)
- expanded_address = mem_address;
+ val = *(base + offset); */
- /* Split the address into canonical BASE + OFFSET terms. */
- address = canon_rtx (expanded_address);
+ expanded_address = cselib_expand_value_rtx (mem_address,
+ scratch, 5);
- *offset = 0;
+ /* If this fails, just go with the address from first
+ iteration. */
+ if (!expanded_address)
+ break;
+ }
+ else
+ expanded_address = mem_address;
- if (dump_file)
- {
- fprintf (dump_file, "\n after cselib_expand address: ");
- print_inline_rtx (dump_file, expanded_address, 0);
- fprintf (dump_file, "\n");
+ /* Split the address into canonical BASE + OFFSET terms. */
+ address = canon_rtx (expanded_address);
- fprintf (dump_file, "\n after canon_rtx address: ");
- print_inline_rtx (dump_file, address, 0);
- fprintf (dump_file, "\n");
- }
+ *offset = 0;
- if (GET_CODE (address) == CONST)
- address = XEXP (address, 0);
+ if (dump_file)
+ {
+ if (expanded)
+ {
+ fprintf (dump_file, "\n after cselib_expand address: ");
+ print_inline_rtx (dump_file, expanded_address, 0);
+ fprintf (dump_file, "\n");
+ }
- if (GET_CODE (address) == PLUS && GET_CODE (XEXP (address, 1)) == CONST_INT)
- {
- *offset = INTVAL (XEXP (address, 1));
- address = XEXP (address, 0);
- }
+ fprintf (dump_file, "\n after canon_rtx address: ");
+ print_inline_rtx (dump_file, address, 0);
+ fprintf (dump_file, "\n");
+ }
- if (const_or_frame_p (address))
- {
- group_info_t group = get_group_info (address);
+ if (GET_CODE (address) == CONST)
+ address = XEXP (address, 0);
- if (dump_file)
- fprintf (dump_file, " gid=%d offset=%d \n", group->id, (int)*offset);
- *base = NULL;
- *group_id = group->id;
- }
- else
- {
- *base = cselib_lookup (address, Pmode, true);
- *group_id = -1;
+ if (GET_CODE (address) == PLUS
+ && GET_CODE (XEXP (address, 1)) == CONST_INT)
+ {
+ *offset = INTVAL (XEXP (address, 1));
+ address = XEXP (address, 0);
+ }
- if (*base == NULL)
+ if (const_or_frame_p (address))
{
+ group_info_t group = get_group_info (address);
+
if (dump_file)
- fprintf (dump_file, " no cselib val - should be a wild read.\n");
- return false;
+ fprintf (dump_file, " gid=%d offset=%d \n",
+ group->id, (int)*offset);
+ *base = NULL;
+ *group_id = group->id;
+ return true;
}
+ }
+
+ *base = cselib_lookup (address, Pmode, true);
+ *group_id = -1;
+
+ if (*base == NULL)
+ {
if (dump_file)
- fprintf (dump_file, " varying cselib base=%d offset = %d\n",
- (*base)->value, (int)*offset);
+ fprintf (dump_file, " no cselib val - should be a wild read.\n");
+ return false;
}
+ if (dump_file)
+ fprintf (dump_file, " varying cselib base=%d offset = %d\n",
+ (*base)->value, (int)*offset);
return true;
}
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index dab71de84f8..65189cfe728 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2009-08-06 Joseph Myers <joseph@codesourcery.com>
+
+ * es.po: Update.
+
2009-07-29 Joseph Myers <joseph@codesourcery.com>
* sv.po: Update.
diff --git a/gcc/po/es.po b/gcc/po/es.po
index 24b2b3dc47f..8fec564ebca 100644
--- a/gcc/po/es.po
+++ b/gcc/po/es.po
@@ -1,4 +1,4 @@
-# Mensajes en espańol para gcc-4.4-b20081121
+# Mensajes en espańol para gcc-4.4.1
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# This file is distributed under the same license as the gcc package.
# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
@@ -7,10 +7,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gcc 4.4-b20081121\n"
+"Project-Id-Version: gcc 4.4.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
"POT-Creation-Date: 2009-07-15 13:37+0200\n"
-"PO-Revision-Date: 2009-03-03 14:52-0600\n"
+"PO-Revision-Date: 2009-08-02 22:42-0500\n"
"Last-Translator: Cristian Othón Martínez Vera <cfuga@itam.mx>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
@@ -873,9 +873,8 @@ msgid " --target-help Display target specific command line options\n
msgstr " --target-help Muestra opciones de línea de comando específicas del objetivo\n"
#: gcc.c:3231
-#, fuzzy
msgid " --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]\n"
-msgstr " --help={target|optimizers|warnings|undocumented|params}[,{[^]joined|[^]separate}]\n"
+msgstr " --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]\n"
#: gcc.c:3232
msgid " Display specific types of command line options\n"
@@ -886,9 +885,8 @@ msgid " (Use '-v --help' to display command line options of sub-processes)\n"
msgstr " (Use '-v --help' para mostrar las opciones de línea de comando de los subprocesos)\n"
#: gcc.c:3235
-#, fuzzy
msgid " --version Display compiler version information\n"
-msgstr " --help Muestra esta información\n"
+msgstr " --version Muestra la información de versión del compilador\n"
#: gcc.c:3236
msgid " -dumpspecs Display all of the built in spec strings\n"
@@ -1070,9 +1068,9 @@ msgid "couldn't run '%s': %s"
msgstr "no se puede ejecutar '%s': %s"
#: gcc.c:3439
-#, fuzzy, c-format
+#, c-format
msgid "couldn't run '%s': %s: %s"
-msgstr "no se puede ejecutar '%s': %s"
+msgstr "no se puede ejecutar '%s': %s: %s"
#. translate_options () has turned --version into -fversion.
#: gcc.c:3643
@@ -1890,14 +1888,12 @@ msgid "The following options are not documented"
msgstr "Las siguientes opciones no están documentadas"
#: opts.c:1385
-#, fuzzy
msgid "The following options take separate arguments"
-msgstr "Las siguientes opciones no están documentadas"
+msgstr "Las siguientes opciones toman argumentos separados"
#: opts.c:1387
-#, fuzzy
msgid "The following options take joined arguments"
-msgstr "Las siguientes opciones no están documentadas"
+msgstr "Las siguientes opciones toman argumentos conjuntos"
#: opts.c:1398
msgid "The following options are language-related"
@@ -2853,7 +2849,7 @@ msgstr "número de ciclos máximo para el RA regional"
#: params.def:755
msgid "max size of conflict table in MB"
-msgstr ""
+msgstr "tamańo máximo de la tabla de conflictos en MB"
#: params.def:763
msgid "The maximum ratio between array size and switch branches for a switch conversion to take place"
@@ -2861,7 +2857,7 @@ msgstr "La tasa máxima entre el tamańo de la matriz y las ramificaciones switch
#: params.def:771
msgid "max basic blocks number in loop for loop invariant motion"
-msgstr ""
+msgstr "número máximo de bloques básicos en el ciclo para el movimiento invariante de ciclo"
#: config/alpha/alpha.c:5039
#, c-format
@@ -3309,19 +3305,19 @@ msgid "invalid UNSPEC as operand"
msgstr "UNSPEC inválido como operando"
#: config/i386/i386.c:11065 config/i386/i386.c:11104 config/i386/i386.c:11278
-#, fuzzy, c-format
+#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
-msgstr "el operando no es una constante ni un código de condición, código de operando 'c' inválido"
+msgstr "el operando no es un código de condición, código de operando 'D' inválido"
#: config/i386/i386.c:11129
-#, fuzzy, c-format
+#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'C'"
-msgstr "el operando no es una constante ni un código de condición, código de operando 'c' inválido"
+msgstr "el operando no es una constante ni un código de condición, código de operando 'C' inválido"
#: config/i386/i386.c:11139
-#, fuzzy, c-format
+#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'F'"
-msgstr "el operando no es una constante ni un código de condición, código de operando 'c' inválido"
+msgstr "el operando no es una constante ni un código de condición, código de operando 'F' inválido"
#: config/i386/i386.c:11157
#, c-format
@@ -3329,9 +3325,9 @@ msgid "operand is neither a constant nor a condition code, invalid operand code
msgstr "el operando no es una constante ni un código de condición, código de operando 'c' inválido"
#: config/i386/i386.c:11167
-#, fuzzy, c-format
+#, c-format
msgid "operand is neither a constant nor a condition code, invalid operand code 'f'"
-msgstr "el operando no es una constante ni un código de condición, código de operando 'c' inválido"
+msgstr "el operando no es una constante ni un código de condición, código de operando 'f' inválido"
#: config/i386/i386.c:11292
#, c-format
@@ -4091,9 +4087,9 @@ msgid "'dim' argument of '%s' intrinsic at %L is not a valid dimension index"
msgstr "el argumento 'dim' del intrínseco '%s' en %L no es un índice de dimensión válido"
#: fortran/check.c:431
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Unequal character lengths (%ld/%ld) in %s at %L"
-msgstr "Longitudes de caracteres desiguales (%ld y %ld) en el intrínseco %s en %L"
+msgstr "Longitudes de caracteres desiguales (%ld/%ld) en %s en %L"
#: fortran/check.c:537 fortran/check.c:2039 fortran/check.c:2054
#, no-c-format
@@ -4219,9 +4215,9 @@ msgid "'a1' argument of '%s' intrinsic at %L must be INTEGER, REAL or CHARACTER"
msgstr "El argumento 'a1' del intrínseco '%s' en %L debe ser INTEGER, REAL o CHARACTER"
#: fortran/check.c:1821
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Argument types of '%s' intrinsic at %L must match (%s/%s)"
-msgstr "El argumento 'a%d' del intrínseco '%s' en %L debe ser %s(%d)"
+msgstr "Los tipos de argumento del intrínseco '%s' en %L deben coincidir (%s/%s)"
#: fortran/check.c:1835
#, no-c-format
@@ -4314,9 +4310,9 @@ msgid "Different shape in dimension %d for MASK and FIELD arguments of UNPACK at
msgstr "Formas diferentes en la dimensión %d para los argumentos MASK y FIELD de UNPACK en %L"
#: fortran/check.c:3190 fortran/check.c:3222
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Size of '%s' argument of '%s' intrinsic at %L too small (%i/%i)"
-msgstr "El argumento '%s' del intrínseco '%s' en %L debe ser %s"
+msgstr "El tamańo del argumento '%s' del intrínseco '%s' en %L es demasiado pequeńo (%i/%i)"
#: fortran/check.c:3230
#, no-c-format
@@ -4649,9 +4645,9 @@ msgid "Kind %d not supported for type %s at %C"
msgstr "No se admite el género %d para el tipo %s en %C"
#: fortran/decl.c:1992
-#, fuzzy, no-c-format
+#, no-c-format
msgid "C kind type parameter is for type %s but type at %L is %s"
-msgstr "El parámetro de género C es para el tipo %s, pero el símbolo '%s' en %L es de tipo %s"
+msgstr "El parámetro de tipo de género C es para el tipo %s, pero el tipo en %L es %s"
#: fortran/decl.c:2001
#, no-c-format
@@ -5823,14 +5819,14 @@ msgid "Bad pointer object in PURE procedure at %L"
msgstr "Objeto puntero erróneo en el procedimiento PURE en %L"
#: fortran/expr.c:3134
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Invalid procedure pointer assignment at %L"
-msgstr "Rangos diferentes en la asignación de puntero en %L"
+msgstr "Asignación de puntero de procedimiento inválida en %L"
#: fortran/expr.c:3140
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Abstract interface '%s' is invalid in procedure pointer assignment at %L"
-msgstr "Parámetros de tipo de género diferentes en la asignación de puntero en %L"
+msgstr "La interfaz abstracta '%s' es inválida en la asignación de puntero de procedimiento en %L"
#: fortran/expr.c:3159
#, no-c-format
@@ -6385,9 +6381,8 @@ msgid "Fortran 2008: 'G0' in format at %C"
msgstr "Fortran 2008: 'G0' en un formato en %C"
#: fortran/io.c:745
-#, fuzzy
msgid "E specifier not allowed with g0 descriptor"
-msgstr "Se esperaba un descriptor de edición P"
+msgstr "No se permite el especificador E con el descriptor g0"
#: fortran/io.c:759 fortran/io.c:761 fortran/io.c:822 fortran/io.c:824
#, no-c-format
@@ -7317,19 +7312,19 @@ msgid "Error writing module file '%s' for writing: %s"
msgstr "Error al escribir al fichero de módulo '%s' para escritura: %s"
#: fortran/module.c:4876
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Can't delete module file '%s': %s"
-msgstr "%s: no se puede borrar el fichero '%s': %s\n"
+msgstr "No se puede borrar el fichero de módulo '%s': %s"
#: fortran/module.c:4879
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Can't rename module file '%s' to '%s': %s"
-msgstr "%s: aviso: no se puede renombrar el fichero '%s' a '%s': %s\n"
+msgstr "No se puede renombrar el fichero de módulo '%s' a '%s': %s"
#: fortran/module.c:4885
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Can't delete temporary module file '%s': %s"
-msgstr "%s: no se puede borrar el fichero de información auxiliar '%s': %s\n"
+msgstr "No se puede borrar el fichero de módulo temporal '%s': %s"
#: fortran/module.c:4905 fortran/module.c:4987
#, no-c-format
@@ -7408,12 +7403,12 @@ msgstr "El fichero '%s' abierto en %C no es un fichero de módulo GFORTRAN"
#: fortran/module.c:5252
#, no-c-format
msgid "Parse error when checking module version for file '%s' opened at %C"
-msgstr ""
+msgstr "Error de decodificación al revisar la versión de módulo para el fichero '%s' abierto en %C"
#: fortran/module.c:5257
#, no-c-format
msgid "Wrong module version '%s' (expected '"
-msgstr ""
+msgstr "Versión de módulo '%s' errónea (se esperaba '"
# No se puede hacer el mismo juego de palabras que en inglés. cfuga
#: fortran/module.c:5270
@@ -8604,7 +8599,7 @@ msgstr "El procedimiento GENERIC '%s' no se permite como un argumento actual en
#: fortran/resolve.c:1163
#, no-c-format
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
-msgstr ""
+msgstr "El procedimiento que no es RECURSIVE '%s' en %L posiblemente se está llamando a sí mismo recursivamente. Declárelo RECURSIVE o utilice -frecursive"
#: fortran/resolve.c:1196 fortran/resolve.c:6023 fortran/resolve.c:6778
#, no-c-format
@@ -8791,14 +8786,14 @@ msgid "Function reference to '%s' at %L is to a non-PURE procedure within a PURE
msgstr "La referencia de función a '%s' en %L apunta a un procedimiento que no es PURE dentro de un procedimiento PURE"
#: fortran/resolve.c:2493
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ENTRY '%s' at %L cannot be called recursively, as function '%s' is not RECURSIVE"
-msgstr "La llamada a la ENTRY '%s' en %L es recursiva, pero la función '%s' no se declaró como RECURSIVE"
+msgstr "ENTRY '%s' en %L no se puede llamar recursivamente, porque la función '%s' no es RECURSIVE"
#: fortran/resolve.c:2497
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Function '%s' at %L cannot be called recursively, as it is not RECURSIVE"
-msgstr "La función '%s' en %L no se puede llamar a sí misma, porque no es RECURSIVE"
+msgstr "La función '%s' en %L no se puede llamar recursivamente, porque no es RECURSIVE"
#: fortran/resolve.c:2544
#, no-c-format
@@ -8846,14 +8841,14 @@ msgid "'%s' at %L has a type, which is not consistent with the CALL at %L"
msgstr "'%s' en %L tiene un tipo, el cual no es consistente con CALL en %L"
#: fortran/resolve.c:2957
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ENTRY '%s' at %L cannot be called recursively, as subroutine '%s' is not RECURSIVE"
-msgstr "La llamada a ENTRY '%s' en %L es recursiva, pero la subrutina '%s' no se declaró como RECURSIVE"
+msgstr "ENTRY '%s' en %L no se puede llamar recursivamente, porque la subrutina '%s' no es RECURSIVE"
#: fortran/resolve.c:2961
-#, fuzzy, no-c-format
+#, no-c-format
msgid "SUBROUTINE '%s' at %L cannot be called recursively, as it is not RECURSIVE"
-msgstr "La SUBROUTINE '%s' en %L no se puede llamar a sí misma, porque no es RECURSIVE"
+msgstr "SUBROUTINE '%s' en %L no se puede llamar recursivamente, porque no es RECURSIVE"
#: fortran/resolve.c:3035
#, no-c-format
@@ -9784,9 +9779,9 @@ msgid "Character length of component '%s' needs to be a constant specification e
msgstr "La longitud de carácter del componente '%s' necesita ser una expresión de especificación constante en %L"
#: fortran/resolve.c:8735
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
-msgstr "El componente '%s' es un tipo PRIVATE y no puede ser un componente de '%s' el cual es PUBLIC en %L"
+msgstr "Fortran 2003: el componente '%s' es un tipo PRIVATE y no puede ser un componente de '%s' el cual es PUBLIC en %L"
#: fortran/resolve.c:8746
#, no-c-format
@@ -9944,9 +9939,9 @@ msgid "Threadprivate at %L isn't SAVEd"
msgstr "No se guarda (SAVE) el threadprivate en %L"
#: fortran/resolve.c:9448
-#, fuzzy, no-c-format
+#, no-c-format
msgid "non-constant DATA value at %L"
-msgstr "matriz no constante en la declaración DATA %L"
+msgstr "valor DATA que no es constante en %L"
#: fortran/resolve.c:9488
#, no-c-format
@@ -11613,7 +11608,7 @@ msgstr "Genera código little-endian"
#: config/mcore/mcore.opt:56 config/fr30/fr30.opt:27
msgid "Assume that run-time support has been provided, so omit -lsim from the linker command line"
-msgstr ""
+msgstr "Asume que se provee el soporte para tiempo de ejecución, así que omite -lsim en la línea de órdenes del enlazador"
#: config/mcore/mcore.opt:60
msgid "Use arbitrary sized immediates in bit operations"
@@ -12177,9 +12172,8 @@ msgid "Allow branches to be packed with other instructions"
msgstr "Permite que las ramificaciones se empaquen con otras instrucciones"
#: config/picochip/picochip.opt:23
-#, fuzzy
msgid "Specify which type of AE to target. This option sets the mul-type and byte-access."
-msgstr "Especifica a qué tipo de AE se apunta. Esta opción establece el tipo mul"
+msgstr "Especifica a qué tipo de AE se apunta. Esta opción establece el tipo muly el acceso a byte."
#: config/picochip/picochip.opt:27
msgid "Specify which type of multiplication to use. Can be mem, mac or none."
@@ -12194,9 +12188,8 @@ msgid "Enable debug output to be generated."
msgstr "Activa que la salida de depuración se genere."
#: config/picochip/picochip.opt:39
-#, fuzzy
msgid "Allow a symbol value to be used as an immediate value in an instruction."
-msgstr "Permite que un valor de símbolo se use como un valor inmediato en an"
+msgstr "Permite que un valor de símbolo se use como un valor inmediato en una instrucción."
#: config/picochip/picochip.opt:43
msgid "Generate warnings when inefficient code is known to be generated."
@@ -12970,9 +12963,8 @@ msgid "Generate load/store with update instructions"
msgstr "Genera load/store con instrucciones de actualización"
#: config/rs6000/rs6000.opt:124
-#, fuzzy
msgid "Avoid generation of indexed load/store instructions when possible"
-msgstr "No genera múltiples instrucciones load/store"
+msgstr "Evita la generación de instrucciones indizadas load/store cuando sea posible"
#: config/rs6000/rs6000.opt:128
msgid "Do not generate fused multiply/add instructions"
@@ -14631,7 +14623,7 @@ msgstr "Construye para SDRAM"
#: config/bfin/bfin.opt:101
msgid "Assume ICPLBs are enabled at runtime."
-msgstr ""
+msgstr "Asume que los ICPLBs están activos en tiempo de ejecución."
#: java/lang.opt:69
msgid "Warn if deprecated empty statements are found"
@@ -15279,13 +15271,12 @@ msgid "Perform structure layout optimizations based"
msgstr "Realiza la ubicación de estructuras basada en optimizaciones"
#: common.opt:680
-#, fuzzy
msgid "-fira-algorithm=[CB|priority] Set the used IRA algorithm"
-msgstr "-fira-algorithm=[regional|CB|mixed] Establece el algoritmo IRA a usar"
+msgstr "-fira-algorithm=[CB|priority] Establece el algoritmo IRA a usar"
#: common.opt:684
msgid "-fira-region=[one|all|mixed] Set regions for IRA"
-msgstr ""
+msgstr "-fira-region=[one|all|mixed] Establece las regiones para IRA"
#: common.opt:688
msgid "Do optimistic coalescing."
@@ -16278,7 +16269,7 @@ msgstr "Avisa sobre sobreescritura de inicializadores sin efectos secundarios"
#: c.opt:373
msgid "Warn about packed bit-fields whose offset changed in GCC 4.4"
-msgstr ""
+msgstr "Avisa sobre campos de bits packed cuyo desplazamiento cambió en GCC 4.4"
#: c.opt:377
msgid "Warn about possibly missing parentheses"
@@ -16545,9 +16536,8 @@ msgid "Enable Objective-C setjmp exception handling runtime"
msgstr "Activa el manejo de excepciones setjmp en tiempo de ejecución de Objective-C"
#: c.opt:694
-#, fuzzy
msgid "Enable OpenMP (implies -frecursive in Fortran)"
-msgstr "Activa OpenMP (también establece frecursive)"
+msgstr "Activa OpenMP (implica -frecursive en Fortran)"
#: c.opt:698
msgid "Recognize C++ keywords like \"compl\" and \"xor\""
@@ -18582,9 +18572,9 @@ msgstr "ISO C90 no admite miembros de matriz flexibles"
#. C99 6.7.5.2p4
#: c-decl.c:4431
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<[*]%> not in a declaration"
-msgstr "no se permite %<[*]%> fuera de una declaración"
+msgstr "%<[*]%> fuera de una declaración"
#: c-decl.c:4444
#, gcc-internal-format
@@ -22968,9 +22958,9 @@ msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr "-freorder-blocks-and-partition no funciona en esta arquitectura"
#: opts.c:1081
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "-fira-algorithm=CB does not work on this architecture"
-msgstr "-fira no funciona en esta arquitectura"
+msgstr "-fira-algorithm=CB no funciona en esta arquitectura"
#: opts.c:1390
#, gcc-internal-format
@@ -23008,9 +22998,9 @@ msgid "unknown ira algorithm \"%s\""
msgstr "algoritmo ira \"%s\" desconocido"
#: opts.c:1980
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "unknown ira region \"%s\""
-msgstr "algoritmo ira \"%s\" desconocido"
+msgstr "región ira \"%s\" desconocido"
#: opts.c:2083
#, gcc-internal-format
@@ -23430,7 +23420,7 @@ msgstr "estructura de relleno para alinear %q+D"
#: stor-layout.c:969
#, gcc-internal-format
msgid "Offset of packed bit-field %qD has changed in GCC 4.4"
-msgstr ""
+msgstr "El desplazamiento del campo de bits packed %qD cambió en GCC 4.4"
#: stor-layout.c:1273
#, gcc-internal-format
@@ -23663,9 +23653,9 @@ msgid "SSA name in freelist but still referenced"
msgstr "hay un nombre SSA en la lista libre, pero aún está referenciado"
#: tree-cfg.c:2829
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "Indirect reference's operand is not a register or a constant."
-msgstr "%s: El tercer operando fuente no es una constante"
+msgstr "La referencia indirecta del operando no es un registro o una constante."
#: tree-cfg.c:2838
#, gcc-internal-format
@@ -23675,7 +23665,7 @@ msgstr "ASSERT_EXPR con una condición que es siempre falsa"
#: tree-cfg.c:2844
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples."
-msgstr ""
+msgstr "no se espera MODIFY_EXPR mientras se tienen tuplas."
#: tree-cfg.c:2865
#, gcc-internal-format
@@ -24275,21 +24265,19 @@ msgid "unimplemented functionality"
msgstr "funcionalidad sin implementar"
#: tree-ssa-structalias.c:4791
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "initialized from %qE"
-msgstr "const %qD sin inicializar"
+msgstr "inicializado desde %qE"
#: tree-ssa-structalias.c:4795
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "initialized from here"
-msgstr "llamado desde aquí"
+msgstr "inicializado desde aquí"
-# No existe una traducción para type-punning. Gracias a Jose María Pérez
-# por el comentario. cfuga
#: tree-ssa-structalias.c:4844
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "dereferencing pointer %qD does break strict-aliasing rules"
-msgstr "la dereferencia del puntero %D \"type-punned\" romperá las reglas de alias estricto"
+msgstr "la dereferencia del puntero %qD rompe las reglas de alias estricto"
#: tree-ssa.c:252
#, gcc-internal-format
@@ -25257,7 +25245,7 @@ msgstr "no se pueden codificar las Rutinas de Servicios de Interrupción en el mo
#: config/arm/arm.c:19618
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
-msgstr ""
+msgstr "la decodificación de %<va_list%> cambió en GCC 4.4"
#: config/arm/pe.c:158 config/mcore/mcore.c:2900
#, gcc-internal-format
@@ -25272,17 +25260,17 @@ msgstr "la variable estática %q+D se marcó como dllimport"
#: config/avr/avr.c:399
#, gcc-internal-format
msgid "the -mno-tablejump switch is deprecated"
-msgstr ""
+msgstr "la opción -mno-tablejump es obsoleta"
#: config/avr/avr.c:400
#, gcc-internal-format
msgid "GCC 4.4 is the last release with this switch"
-msgstr ""
+msgstr "GCC 4.4 es la última versión con esta opción"
#: config/avr/avr.c:401
#, gcc-internal-format
msgid "use the -fno-jump-tables switch instead"
-msgstr ""
+msgstr "use la opción -fno-jump-tables en su lugar"
#: config/avr/avr.c:4626
#, gcc-internal-format
@@ -25689,9 +25677,9 @@ msgid "%sregparm=%d%s is not between 0 and %d"
msgstr "%sregparm=%d%s no está entre 0 y %d"
#: config/i386/i386.c:2918
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%salign-loops%s is obsolete, use -falign-loops%s"
-msgstr "%salign-loops%s es obsoleto, use %salign-loops%s"
+msgstr "%salign-loops%s es obsoleto, use -falign-loops%s"
#: config/i386/i386.c:2924 config/i386/i386.c:2939 config/i386/i386.c:2954
#, gcc-internal-format
@@ -25699,14 +25687,14 @@ msgid "%salign-loops=%d%s is not between 0 and %d"
msgstr "%salign-loops=%d%s no está entre 0 y %d"
#: config/i386/i386.c:2933
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%salign-jumps%s is obsolete, use -falign-jumps%s"
-msgstr "%salign-jumps%s es obsoleto, use %salign-jumps%s"
+msgstr "%salign-jumps%s es obsoleto, use -falign-jumps%s"
#: config/i386/i386.c:2948
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%salign-functions%s is obsolete, use -falign-functions%s"
-msgstr "%salign-functions%s es obsoleto, use %salign-functions%s"
+msgstr "%salign-functions%s es obsoleto, use -falign-functions%s"
#: config/i386/i386.c:2983
#, gcc-internal-format
@@ -25841,7 +25829,7 @@ msgstr "Se llama a %qT con el atributo sseregparm sin activar SSE/SSE2"
#: config/i386/i386.c:4722
#, gcc-internal-format
msgid "ms_abi attribute requires -maccumulate-outgoing-args or subtarget optimization implying it"
-msgstr ""
+msgstr "el atributo ms_abi requiere -maccumulate-outgoing-args o que la optimización de subobjetivo lo implique"
#: config/i386/i386.c:4840
#, gcc-internal-format
@@ -25851,17 +25839,17 @@ msgstr "el argumento de vector AVX sin AVX activado cambia la ABI"
#: config/i386/i386.c:5020
#, gcc-internal-format
msgid "The ABI of passing struct with a flexible array member has changed in GCC 4.4"
-msgstr ""
+msgstr "La ABI para pasar un struct con un miembro de matriz flexible cambió en GCC 4.4"
#: config/i386/i386.c:5139
#, gcc-internal-format
msgid "The ABI of passing union with long double has changed in GCC 4.4"
-msgstr ""
+msgstr "La ABI para pasar un union con long double cambió en GCC 4.4"
#: config/i386/i386.c:5254
#, gcc-internal-format
msgid "The ABI of passing structure with complex float member has changed in GCC 4.4"
-msgstr ""
+msgstr "La ABI para pasar una estructura con un miembro de coma flotante compleja cambió en GCC 4.4"
#: config/i386/i386.c:5399
#, gcc-internal-format
@@ -26071,14 +26059,14 @@ msgid "bad value %<%s%> for -mtls-size= switch"
msgstr "valor erróneo %<%s%> para el interruptor -mtls-size="
#: config/ia64/ia64.c:5254
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "value %<%s%> for -mtune= switch is deprecated"
-msgstr "valor erróneo %<%s%> para el interruptor -mtune="
+msgstr "el valor %<%s%> para el interruptor -mtune= es obsoleto"
#: config/ia64/ia64.c:5256
#, gcc-internal-format
msgid "GCC 4.4 is the last release with Itanium1 tuning support"
-msgstr ""
+msgstr "GCC 4.4 es la última versión que admite ajustes para Itanium1"
#: config/ia64/ia64.c:5263
#, gcc-internal-format
@@ -27611,9 +27599,9 @@ msgid "converting %<false%> to pointer type for argument %P of %qD"
msgstr "se convierte %<false%> a tipo puntero para el argumento %P de %qD"
#: cp/call.c:4573
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too many braces around initializer for %qT"
-msgstr "faltan llaves alrededor del inicializador para %qT"
+msgstr "demasiadas llaves alrededor del inicializador para %qT"
#: cp/call.c:4595 cp/cvt.c:217
#, gcc-internal-format
@@ -27638,7 +27626,7 @@ msgstr "no se puede unir el campo de bits %qE a %qT"
#: cp/call.c:4798 cp/call.c:4816
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
-msgstr "no se unir el campo empacado %qE a %qT"
+msgstr "no se unir el campo packed %qE a %qT"
#: cp/call.c:4801
#, gcc-internal-format
@@ -27732,19 +27720,19 @@ msgid " because conversion sequence for the argument is better"
msgstr " porque la secuencia de conversión para el argumento es mejor"
#: cp/call.c:6899
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
-msgstr "se especificó un argumento por defecto en la especialización explícita"
+msgstr "no coincide el argumento por defecto en la resolución de sobrecarga"
#: cp/call.c:6902
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid " candidate 1: %q+#F"
-msgstr "el candidato es: %+#D"
+msgstr " candidato 1: %q+#F"
#: cp/call.c:6904
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid " candidate 2: %q+#F"
-msgstr "el candidato es: %+#D"
+msgstr " candidato 2: %q+#F"
#: cp/call.c:6942
#, gcc-internal-format
@@ -28742,9 +28730,9 @@ msgid "cannot initialize %qT from %qT"
msgstr "no se pueden inicializar %qT desde %qT"
#: cp/decl.c:4437
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
-msgstr "el nombre %qD se utiliza en un inicializador designado en estilo GNU para una matriz"
+msgstr "se usó un nombre en un inicializador designado de estilo GNU para una matriz"
#: cp/decl.c:4442
#, gcc-internal-format
@@ -29414,9 +29402,9 @@ msgid "cannot declare pointer to %q#T member"
msgstr "no se puede declarar el puntero al miembro %q#T"
#: cp/decl.c:8500
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "cannot declare %s to qualified function type %qT"
-msgstr "no se puede declarar el campo de bits %qD con un tipo de función"
+msgstr "no se puede declarar %s para el tipo de función calificado %qT"
#: cp/decl.c:8537
#, gcc-internal-format
@@ -29664,9 +29652,9 @@ msgid "%<inline%> specifier invalid for function %qs declared out of global scop
msgstr "el especificador %<inline%> es inválido para la función %qs declarada fuera del ámbito global"
#: cp/decl.c:9365
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
-msgstr "%qT no es una clase o un espacio de nombres"
+msgstr "%q#T no es una clase o un espacio de nombres"
#: cp/decl.c:9373
#, gcc-internal-format
@@ -29674,9 +29662,9 @@ msgid "virtual non-class function %qs"
msgstr "función virtual %qs que no es clase"
#: cp/decl.c:9380
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qs defined in a non-class scope"
-msgstr "No se definió la variable %qs en la clase %qs"
+msgstr "se definió %qs en un ámbito que no es una clase"
#: cp/decl.c:9413
#, gcc-internal-format
@@ -30016,9 +30004,9 @@ msgid "%<operator=%> should return a reference to %<*this%>"
msgstr "%<operator=%> debe devolver una referencia a %<*this%>"
#: cp/decl.c:11874
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid function declaration"
-msgstr "declaración de la función miembro inválida"
+msgstr "declaración de función inválida"
#: cp/decl.c:11958
#, gcc-internal-format
@@ -30091,9 +30079,9 @@ msgid "Java method %qD has non-Java parameter type %qT"
msgstr "el método Java %qD tiene un tipo de parámetro %qT que no es de Java"
#: cp/decl2.c:579
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "template parameter lists provided don't match the template parameters of %qD"
-msgstr "los parámetros de la plantilla no coinciden con la plantilla"
+msgstr "las listas de parámetro de plantilla proporcionados no coinciden con los parámetros de plantilla de %qD"
#: cp/decl2.c:647
#, gcc-internal-format
@@ -30409,9 +30397,9 @@ msgid "%J%qD should be initialized in the member initialization list"
msgstr "%J%qD se debe inicializar en la lista de inicialización de miembros"
#: cp/init.c:454
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%Jvalue-initialization of %q#D, which has reference type"
-msgstr "%Jla inicialización por defecto de %q#D, el cual tiene el tipo de referencia"
+msgstr "%Jvalor-inicialización de %q#D, el cual tiene el tipo de referencia"
#. TYPE_NEEDS_CONSTRUCTING can be set just because we have a
#. vtable; still give this diagnostic.
@@ -30571,9 +30559,9 @@ msgid "request for member %qD is ambiguous"
msgstr "la petición para el miembro %qD es ambigua"
#: cp/init.c:2136
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "non-constant array size in new, unable to verify length of initializer-list"
-msgstr "índice de matriz no constante en el inicializador"
+msgstr "tamańo de matriz no constante en new, no se puede verificar la longitud de la lista del inicializador"
#: cp/init.c:2145
#, gcc-internal-format
@@ -30698,17 +30686,17 @@ msgstr "se decodifica typeof, utilice decltype en su lugar"
#: cp/mangle.c:1903
#, gcc-internal-format
msgid "mangling unknown fixed point type"
-msgstr ""
+msgstr "se decodifica el tipo de coma fija desconocido"
#: cp/mangle.c:2332
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "mangling %C"
-msgstr "aviso: "
+msgstr "decodificando %C"
#: cp/mangle.c:2387
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "mangling new-expression"
-msgstr "falta la expresión de incremento"
+msgstr "decodificando la expresión new"
#: cp/mangle.c:2407
#, gcc-internal-format
@@ -31145,9 +31133,9 @@ msgid "%Hunsupported non-standard concatenation of string literals"
msgstr "%Hno se admite la concatenació no estándar de literales de cadena"
#: cp/parser.c:3154
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%Hfixed-point types not supported in C++"
-msgstr "no se admiten tipos de coma fija para este objetivo"
+msgstr "%Hno se admiten tipos de coma fija en C++"
#: cp/parser.c:3235
#, gcc-internal-format
@@ -31395,9 +31383,9 @@ msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr "utilice %<%T::template %D%> para indicar que es una plantilla"
#: cp/parser.c:10483
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%Hexpected parameter pack before %<...%>"
-msgstr "se esperaban especificadores de declaración o %<...%>"
+msgstr "%Hse esperaba el parámetro pack antes de %<...%>"
#: cp/parser.c:10893
#, gcc-internal-format
@@ -32168,9 +32156,9 @@ msgid "%qE is not a valid template argument for type %qT because object %qD has
msgstr "%qE no es un argumento válido de plantilla para el tipo %qT porque el objeto %qD no tiene enlazado externo"
#: cp/pt.c:4578
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE is not a valid template argument for type %qT"
-msgstr "%qE no es un argumento de plantilla válido para el tipo %qT porque es un puntero"
+msgstr "%qE no es un argumento de plantilla válido para el tipo %qT"
#: cp/pt.c:4579
#, gcc-internal-format
@@ -32240,9 +32228,9 @@ msgstr " se esperaba una plantilla de tipo %qD, se obtuvo %qD"
#. Not sure if this is reachable, but it doesn't hurt
#. to be robust.
#: cp/pt.c:5091
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type mismatch in nontype parameter pack"
-msgstr "los tipos de datos no coinciden en la referencia a componente"
+msgstr "los tipos no coinciden en el parámetro pack que no es de tipo"
#: cp/pt.c:5113
#, gcc-internal-format
@@ -33149,9 +33137,9 @@ msgid "invalid use of %qD"
msgstr "uso inválido de %qD"
#: cp/typeck.c:2150
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "object type %qT does not match destructor name ~%qT"
-msgstr "el tipo calificado %qT no coincide con el nombre del destructor ~%qT"
+msgstr "el tipo de objeto %qT no coincide con el nombre del destructor ~%qT"
#: cp/typeck.c:2158
#, gcc-internal-format
@@ -33837,9 +33825,9 @@ msgid "pointer to member type %qT incompatible with object type %qT"
msgstr "el tipo de puntero a miembro %qT es incompatible con el tipo objeto %qT"
#: cp/typeck2.c:1450
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid value-initialization of reference types"
-msgstr "inicialización por valor de la referencia"
+msgstr "inicialización por valor inválida de los tipos de referencia"
#: cp/typeck2.c:1637
#, gcc-internal-format
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 6fe480f5dc7..0fd8cd6d298 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -2009,6 +2009,7 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
/* x*2 is x+x and x*(-1) is -x */
if (GET_CODE (trueop1) == CONST_DOUBLE
&& SCALAR_FLOAT_MODE_P (GET_MODE (trueop1))
+ && !DECIMAL_FLOAT_MODE_P (GET_MODE (trueop1))
&& GET_MODE (op0) == mode)
{
REAL_VALUE_TYPE d;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b98709008e4..12c65f0e39e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,88 @@
+2009-08-09 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/41016
+ * gcc.c-torture/compile/pr41016.c: New testcase.
+
+2009-08-08 Laurent GUERBY <laurent@guerby.net>
+
+ * ada/acats/support/impdef.a: Tweak timing constants. Add
+ Long_Minimum_Task_Switch and Long_Switch_To_New_Task.
+ * ada/acats/tests/c9/c940005.a: Use new timing constants.
+ * ada/acats/tests/c9/c940007.a: Likewise.
+ * ada/acats/tests/c9/c94001c.ada: Likewise.
+ * ada/acats/tests/c9/c94006a.ada: Likewise.
+ * ada/acats/tests/c9/c94008c.ada: Likewise.
+ * ada/acats/tests/c9/c951002.a: Likewise.
+ * ada/acats/tests/c9/c954a01.a: Likewise.
+ * ada/acats/tests/c9/c96001a.ada: Likewise.
+ * ada/acats/tests/c9/c97307a.ada: Likewise.
+
+2009-08-05 Jason Merrill <jason@redhat.com>
+
+ PR c++/40948
+ * g++.dg/ext/complit12.C: Expand.
+
+2009-08-05 Uros Bizjak <ubizjak@gmail.com>
+ Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
+
+ PR target/40906
+ * gcc.target/i386/pr40906-1.c: New test.
+ * gcc.target/i386/pr40906-2.c: Ditto.
+ * gcc.target/i386/pr40906-3.c: Ditto.
+
+2009-08-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline:
+ 2009-07-30 Martin Jambor <mjambor@suse.cz>
+
+ PR tree-optimization/40570
+ * gcc.c-torture/compile/pr40570.c: New test.
+
+ 2009-07-29 Richard Guenther <rguenther@suse.de>
+
+ PR c++/40834
+ * g++.dg/torture/pr40834.C: New testcase.
+
+2009-08-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/40924
+ * g++.dg/torture/pr40924.C: New test.
+
+2009-08-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/40853
+ * gfortran.dg/namelist_40.f90: Update error output.
+ * gfortran.dg/namelist_47.f90: Update error output.
+ * gfortran.dg/namelist_58.f90: New test.
+
+2009-08-04 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/39987
+ * g++.dg/overload/defarg4.C: New test.
+
+2009-08-04 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/39706
+ * g++.dg/debug/dwarf2/pubnames-1.C: New test.
+
+2009-08-03 Jason Merrill <jason@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/40948
+ * g++.dg/ext/complit12.C: New.
+
+2009-08-03 Janis Johnson <janis187@us.ibm.com>
+
+ PR c/39902
+ * gcc.target/powerpc/pr39902-2.c: New test.
+
+2009-08-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/40943
+ * gcc.dg/uninit-6.c: Re-add XFAIL.
+ * gcc.dg/uninit-6-O0.c: Likewise.
+ * gcc.dg/uninit-pr40943.c: New test.
+
2009-07-30 Janis Johnson <janis187@us.ibm.com>
PR c/39902
diff --git a/gcc/testsuite/ada/acats/support/impdef.a b/gcc/testsuite/ada/acats/support/impdef.a
index 815594b9f86..9c23d0b7f76 100644
--- a/gcc/testsuite/ada/acats/support/impdef.a
+++ b/gcc/testsuite/ada/acats/support/impdef.a
@@ -105,6 +105,8 @@ package ImpDef is
Minimum_Task_Switch : constant Duration := 0.001;
-- ^^^ --- MODIFY HERE AS NEEDED
+ Long_Minimum_Task_Switch : constant Duration := 0.1;
+
--=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
-- This is the time required to activate another task and allow it
@@ -117,13 +119,15 @@ package ImpDef is
Switch_To_New_Task : constant Duration := 0.001;
-- ^^^ -- MODIFY HERE AS NEEDED
+ Long_Switch_To_New_Task : constant Duration := 0.1;
+
--=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
-- This is the time which will clear the queues of other tasks
-- waiting to run. It is expected that this will be about five
-- times greater than Switch_To_New_Task.
- Clear_Ready_Queue : constant Duration := 1.1;
+ Clear_Ready_Queue : constant Duration := 0.1;
-- ^^^ --- MODIFY HERE AS NEEDED
--=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====-=====--
diff --git a/gcc/testsuite/ada/acats/tests/c9/c940005.a b/gcc/testsuite/ada/acats/tests/c9/c940005.a
index adb58b18ca4..47a97bf2de6 100644
--- a/gcc/testsuite/ada/acats/tests/c9/c940005.a
+++ b/gcc/testsuite/ada/acats/tests/c9/c940005.a
@@ -85,7 +85,7 @@ begin
-- In reality one would expect a time of 5 to 10 seconds. In
-- the interests of speeding up the test suite a shorter time
-- is used
- Pulse_Time_Delta : constant duration := ImpDef.Switch_To_New_Task;
+ Pulse_Time_Delta : constant duration := ImpDef.Long_Switch_To_New_Task;
-- control over stopping tasks
protected Control is
diff --git a/gcc/testsuite/ada/acats/tests/c9/c940007.a b/gcc/testsuite/ada/acats/tests/c9/c940007.a
index c678463633a..41e80f4e25e 100644
--- a/gcc/testsuite/ada/acats/tests/c9/c940007.a
+++ b/gcc/testsuite/ada/acats/tests/c9/c940007.a
@@ -90,7 +90,7 @@ begin
-- In reality one would expect a time of 5 to 10 seconds. In
-- the interests of speeding up the test suite a shorter time
-- is used
- Pulse_Time_Delta : constant duration := ImpDef.Switch_To_New_Task;
+ Pulse_Time_Delta : constant duration := ImpDef.Long_Switch_To_New_Task;
-- control over stopping tasks
diff --git a/gcc/testsuite/ada/acats/tests/c9/c94001c.ada b/gcc/testsuite/ada/acats/tests/c9/c94001c.ada
index e53789f8f42..1d0625559de 100644
--- a/gcc/testsuite/ada/acats/tests/c9/c94001c.ada
+++ b/gcc/testsuite/ada/acats/tests/c9/c94001c.ada
@@ -209,7 +209,7 @@ BEGIN
BEGIN -- (E)
WHILE NOT(OUT_TSK'TERMINATED) AND DELAY_COUNT < 60 LOOP
- DELAY 1.0 * Impdef.One_Second;
+ DELAY 1.0 * Impdef.One_Long_Second;
DELAY_COUNT := DELAY_COUNT + 1;
END LOOP;
IF DELAY_COUNT = 60 THEN
@@ -252,7 +252,7 @@ BEGIN
BEGIN
WHILE NOT(OUT_TSK'TERMINATED) AND DELAY_COUNT < 60 LOOP
- DELAY 1.0 * Impdef.One_Second;
+ DELAY 1.0 * Impdef.One_Long_Second;
DELAY_COUNT := DELAY_COUNT + 1;
END LOOP;
IF DELAY_COUNT = 60 THEN
diff --git a/gcc/testsuite/ada/acats/tests/c9/c94006a.ada b/gcc/testsuite/ada/acats/tests/c9/c94006a.ada
index c088f8bb577..cac5fc6e09c 100644
--- a/gcc/testsuite/ada/acats/tests/c9/c94006a.ada
+++ b/gcc/testsuite/ada/acats/tests/c9/c94006a.ada
@@ -42,7 +42,7 @@ PROCEDURE C94006A IS
SELECT
ACCEPT E;
OR
- DELAY 30.0 * Impdef.One_Second;
+ DELAY 30.0 * Impdef.One_Long_Second;
END SELECT;
END TT;
diff --git a/gcc/testsuite/ada/acats/tests/c9/c94008c.ada b/gcc/testsuite/ada/acats/tests/c9/c94008c.ada
index 53ec450dec3..fb2eee97f69 100644
--- a/gcc/testsuite/ada/acats/tests/c9/c94008c.ada
+++ b/gcc/testsuite/ada/acats/tests/c9/c94008c.ada
@@ -202,7 +202,7 @@ BEGIN -- C94008C
DELAY 10.0 * Impdef.One_Second;
IF TERMINATE_COUNT.GET /= 1 THEN
- DELAY 20.0 * Impdef.One_Second;
+ DELAY 20.0 * Impdef.One_Long_Second;
END IF;
IF TERMINATE_COUNT.GET /= 1 THEN
@@ -243,7 +243,7 @@ BEGIN -- C94008C
DELAY 10.0 * Impdef.One_Second; -- WAIT FOR T1, T2, AND T3 TO GET TO SELECT STMTS.
IF TERMINATE_COUNT.GET /= 3 THEN
- DELAY 20.0 * Impdef.One_Second;
+ DELAY 20.0 * Impdef.One_Long_Second;
END IF;
IF TERMINATE_COUNT.GET /= 3 THEN
diff --git a/gcc/testsuite/ada/acats/tests/c9/c951002.a b/gcc/testsuite/ada/acats/tests/c9/c951002.a
index 8ccb2d012fe..65b696c4af9 100644
--- a/gcc/testsuite/ada/acats/tests/c9/c951002.a
+++ b/gcc/testsuite/ada/acats/tests/c9/c951002.a
@@ -278,14 +278,14 @@ begin
-- Wait until the message is queued on the entry before starting
-- the Credit_Task
while not Hold.TC_Message_is_Queued loop
- delay ImpDef.Minimum_Task_Switch;
+ delay ImpDef.Long_Minimum_Task_Switch;
end loop;
--
Credit_Task.TC_Start;
-- Ensure the first part of the test is complete before continuing
while not (Credit_Message'terminated and Credit_Task'terminated) loop
- delay ImpDef.Minimum_Task_Switch;
+ delay ImpDef.Long_Minimum_Task_Switch;
end loop;
--======================================================
@@ -298,12 +298,12 @@ begin
-- for it to reach the accept statement and call Hold.Set_DB_Overload
-- before starting Debit_Message
--
- delay ImpDef.Switch_To_New_Task;
+ delay ImpDef.Long_Switch_To_New_Task;
Debit_Message.TC_Start;
while not Debit_Task'terminated loop
- delay ImpDef.Minimum_Task_Switch;
+ delay ImpDef.Long_Minimum_Task_Switch;
end loop;
Hold.Clear_DB_Overload; -- Allow completion
diff --git a/gcc/testsuite/ada/acats/tests/c9/c954a01.a b/gcc/testsuite/ada/acats/tests/c9/c954a01.a
index 34f48b29171..3ea545a8f0e 100644
--- a/gcc/testsuite/ada/acats/tests/c9/c954a01.a
+++ b/gcc/testsuite/ada/acats/tests/c9/c954a01.a
@@ -148,7 +148,7 @@ package body C954A01_0 is -- Printer server abstraction.
end select;
-- Allow other tasks to get control
- delay ImpDef.Minimum_Task_Switch;
+ delay ImpDef.Long_Minimum_Task_Switch;
end loop;
@@ -175,7 +175,7 @@ use F954A00;
procedure C954A01 is
- Long_Enough : constant Duration := ImpDef.Switch_To_New_Task;
+ Long_Enough : constant Duration := ImpDef.Long_Switch_To_New_Task;
--==============================================--
diff --git a/gcc/testsuite/ada/acats/tests/c9/c96001a.ada b/gcc/testsuite/ada/acats/tests/c9/c96001a.ada
index a4e1c4a9c4b..f958ea107fe 100644
--- a/gcc/testsuite/ada/acats/tests/c9/c96001a.ada
+++ b/gcc/testsuite/ada/acats/tests/c9/c96001a.ada
@@ -51,7 +51,7 @@ BEGIN
---------------------------------------------
DECLARE -- (A)
- X : DURATION := 5.0;
+ X : DURATION := 5.0 * Impdef.One_Second;
OLD_TIME : TIME;
LAPSE : DURATION;
BEGIN -- (A)
diff --git a/gcc/testsuite/ada/acats/tests/c9/c97307a.ada b/gcc/testsuite/ada/acats/tests/c9/c97307a.ada
index 6d7be50562b..32d26e6b333 100644
--- a/gcc/testsuite/ada/acats/tests/c9/c97307a.ada
+++ b/gcc/testsuite/ada/acats/tests/c9/c97307a.ada
@@ -160,7 +160,7 @@ BEGIN
EXPIRED.READ (EXPIRED_CALLS);
EXIT WHEN E'COUNT >= DESIRED_QUEUE_LENGTH -
EXPIRED_CALLS;
- DELAY 2.0 * Impdef.One_Second;
+ DELAY 2.0 * Impdef.One_Long_Second;
END LOOP;
EXIT WHEN DESIRED_QUEUE_LENGTH = 5;
DISPATCH.READY;
@@ -171,7 +171,7 @@ BEGIN
-- LET THE TIMED ENTRY CALLS ISSUED BY CALLER1,
-- CALLER3, AND CALLER5 EXPIRE:
- DELAY DELAY_TIME + 10.0 * Impdef.One_Second;
+ DELAY DELAY_TIME + 10.0 * Impdef.One_Long_Second;
-- AT THIS POINT, ALL THE TIMED ENTRY CALLS MUST HAVE
-- EXPIRED AND BEEN REMOVED FROM THE ENTRY QUEUE FOR E,
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C b/gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C
new file mode 100644
index 00000000000..f5089ca2da8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/pubnames-1.C
@@ -0,0 +1,14 @@
+// Contributed by Dodji Seketeli <dodji@redhat.com>
+// Origin PR debug/39706
+// { dg-options "-g -dA" }
+// { dg-do compile }
+// { dg-final { scan-assembler-times ".debug_pubnames" 1 } }
+// { dg-final { scan-assembler-times "\"main\".*external name" 1 } }
+// { dg-final { scan-assembler-times "\"ns::ns_x.*external name" 1 } }
+// { dg-final { scan-assembler-times "\"y::y_x.*external name" 1 } }
+
+namespace ns { int ns_x; }
+class y { public: static int y_x; };
+int y::y_x;
+int main() { return ns::ns_x; }
+
diff --git a/gcc/testsuite/g++.dg/ext/complit12.C b/gcc/testsuite/g++.dg/ext/complit12.C
new file mode 100644
index 00000000000..29c9af1864f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/complit12.C
@@ -0,0 +1,65 @@
+// PR c++/40948
+// { dg-do run }
+// { dg-options "" }
+
+int c;
+struct M
+{
+ M () { ++c; }
+ M (const M&) { ++c; }
+ ~M () { --c; }
+};
+
+struct S
+{
+ S ();
+ M m[1];
+};
+
+S::S () : m ((M[1]) { M () })
+{
+}
+
+struct T
+{
+ T ();
+ M m[4];
+};
+
+T::T () : m ((M[4]) { M (), M (), M (), M () })
+{
+}
+
+typedef M MA[1];
+MA &bar (MA, MA& r) { return r; }
+
+M f(M m) { return m; }
+
+int main ()
+{
+ {
+ M m[1] = (M[1]) { M () };
+ if (c != 1)
+ return 1;
+ M n = (M) { M () };
+ if (c != 2)
+ return 2;
+ M o[4] = (M[4]) { M (), M (), M (), M () };
+ if (c != 6)
+ return 3;
+ S s;
+ if (c != 7)
+ return 4;
+ T t;
+ if (c != 11)
+ return 5;
+ MA ma = bar ((M[2]) { M(), M() }, m);
+ if (c != 12)
+ return 7;
+ M mm[2] = ((M[2]) { f(M()), f(M()) });
+ if (c != 14)
+ return 8;
+ }
+ if (c != 0)
+ return 6;
+}
diff --git a/gcc/testsuite/g++.dg/overload/defarg4.C b/gcc/testsuite/g++.dg/overload/defarg4.C
new file mode 100644
index 00000000000..198f9b28f32
--- /dev/null
+++ b/gcc/testsuite/g++.dg/overload/defarg4.C
@@ -0,0 +1,26 @@
+// Contributed by Dodji Seketeli <dodji@redhat.com>
+// Origin PR c++/39987
+// { dg-do "compile" }
+
+class foo
+{
+ template<typename U>
+ static bool func(const U& x)
+ {}
+public:
+ template<typename U>
+ unsigned int Find(const U& x, bool (*pFunc) (const U&) = func) const
+ {}
+};
+
+class bar {
+ bool Initialize();
+protected:
+ foo b;
+};
+
+bool bar::Initialize()
+{
+ b.Find(b);
+}
+
diff --git a/gcc/testsuite/g++.dg/torture/pr40834.C b/gcc/testsuite/g++.dg/torture/pr40834.C
new file mode 100644
index 00000000000..67d3028532a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr40834.C
@@ -0,0 +1,52 @@
+/* { dg-do run } */
+
+extern "C" void abort (void);
+class XalanDOMString
+{
+public:
+ int y;
+};
+
+class XObject
+{
+public:
+ const XalanDOMString& str() const { return x; }
+ XalanDOMString x;
+};
+
+class XObjectPtr
+{
+public:
+ XObjectPtr(const XObjectPtr& theSource)
+ {
+ m_xobjectPtr = theSource.m_xobjectPtr;
+ }
+ const XObject* operator->() const
+ {
+ return m_xobjectPtr;
+ };
+ XObjectPtr(XObject *p) { m_xobjectPtr = p; }
+ XObject* m_xobjectPtr;
+};
+
+class FunctionSubstringBefore
+{
+public:
+ int execute( const XObjectPtr arg1) const
+ {
+ const XalanDOMString& theFirstString = arg1->str();
+ return theFirstString.y;
+ }
+};
+
+int
+main ()
+{
+ XObject x;
+ XObjectPtr y (&x);
+ x.x.y = -1;
+ FunctionSubstringBefore z;
+ if (z.execute (y) != -1)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr40924.C b/gcc/testsuite/g++.dg/torture/pr40924.C
new file mode 100644
index 00000000000..9140da3ba3b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr40924.C
@@ -0,0 +1,111 @@
+// PR rtl-optimization/40924
+// { dg-do run }
+
+extern "C" void abort (void);
+
+#define MAY_ALIAS __attribute__((__may_alias__))
+
+typedef struct { float v[2]; } floata;
+typedef struct { int v[2]; } inta;
+
+typedef unsigned int uint MAY_ALIAS;
+typedef signed int sint MAY_ALIAS;
+typedef float flt MAY_ALIAS;
+
+static inline unsigned short
+less_than (inta a, inta b)
+{
+ unsigned short r = 0;
+ const uint *p1 = (const uint *) &a;
+ const uint *p2 = (const uint *) &b;
+ for (int i=0; i < 2; i++)
+ if (p1[i] < p2[i]) r |= (1 << i);
+ return r;
+}
+
+static inline inta
+multiply (inta b, inta c)
+{
+ inta r;
+ sint *p3 = (sint *) &c;
+ for (int i=0; i < 2; i++)
+ r.v[i] = (int) (b.v[i] * p3[i] & 0xFFFFFFFF);
+ return r;
+}
+
+static inline floata
+gather (inta indexes, const void *baseAddr)
+{
+ floata r;
+
+ sint *idx = (sint *) &indexes;
+ flt *src = (flt *) baseAddr;
+ for (int i=0; i < 2; i++)
+ r.v[i] = *(src + idx[i]);
+ return r;
+}
+
+static inline inta
+add (const inta &b, const inta &c)
+{
+ inta result;
+ sint *r = (sint *) &result;
+
+ for (int i=0; i < 2; i++)
+ r[i] = b.v[i] + c.v[i];
+ return result;
+}
+
+struct uintv
+{
+ inta data;
+ inline uintv () { data.v[0] = 0; data.v[1] = 1; }
+ inline uintv (unsigned int a)
+ {
+ for (int i=0; i < 2; i++)
+ *(uint *) &data.v[i] = a;
+ }
+ inline uintv (inta x) : data (x) {}
+ inline uintv operator* (const uintv &x) const
+ { return multiply (data, x.data); }
+ inline uintv operator+ (const uintv &x) const
+ { return uintv (add (data, x.data)); }
+ inline unsigned short operator< (const uintv &x) const
+ { return less_than (data, x.data); }
+};
+
+struct floatv
+{
+ floata data;
+ explicit inline floatv (const uintv &x)
+ {
+ uint *p2 = (uint *) &x.data;
+ for (int i=0; i < 2; i++)
+ data.v[i] = p2[i];
+ }
+ inline floatv (const float *array, const uintv &indexes)
+ {
+ const uintv &offsets = indexes * uintv (1);
+ data = gather (offsets.data, array);
+ }
+ unsigned short operator== (const floatv &x) const
+ {
+ unsigned short r = 0;
+ for (int i=0; i < 2; i++)
+ if (data.v[i] == x.data.v[i]) r |= (1 << i);
+ return r;
+ }
+};
+
+int
+main ()
+{
+ const float array[2] = { 2, 3 };
+ for (uintv i; (i < 2) == 3; i = i + 2)
+ {
+ const floatv ii (i + 2);
+ floatv a (array, i);
+ if ((a == ii) != 3)
+ abort ();
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr40570.c b/gcc/testsuite/gcc.c-torture/compile/pr40570.c
new file mode 100644
index 00000000000..7c3f4d83b2e
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr40570.c
@@ -0,0 +1,22 @@
+extern void anything(int);
+
+static int foo(int i);
+
+static int bar(int i) { foo(i); }
+
+extern int j;
+
+static int foo(int i)
+{
+ if (j)
+ anything(j);
+ return bar(i);
+}
+
+int baz()
+{
+ foo(0);
+ if (baz())
+ return 1;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41016.c b/gcc/testsuite/gcc.c-torture/compile/pr41016.c
new file mode 100644
index 00000000000..57bddb49dea
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr41016.c
@@ -0,0 +1,17 @@
+typedef struct _IO_FILE FILE;
+void
+CompareRNAStructures (FILE * ofp, int start, int L, char *ss_true, char *ss)
+{
+ int i;
+ float agree = 0.;
+ float pairs = 0.;
+ float pairs_true = 0.;
+ for (i = 0; i < L; i++)
+ {
+ pairs_true += 1.;
+ agree += 1.;
+ }
+ if (((int) pairs % 2 != 0) || ((int) pairs_true % 2 != 0)
+ || ((int) agree % 2 != 0))
+ Die ("Error in CompareRNAStrutures(); odd number of paired nucleotides\n");
+}
diff --git a/gcc/testsuite/gcc.dg/uninit-6-O0.c b/gcc/testsuite/gcc.dg/uninit-6-O0.c
index f4588305ffa..e3fefe5e1c5 100644
--- a/gcc/testsuite/gcc.dg/uninit-6-O0.c
+++ b/gcc/testsuite/gcc.dg/uninit-6-O0.c
@@ -39,7 +39,7 @@ make_something(int a, int b, int c)
rv = malloc (sizeof (struct tree));
rv->car = 0;
- APPEND(rv, field, INTEGER_T, a); /* { dg-bogus "field" "uninitialized variable warning" } */
+ APPEND(rv, field, INTEGER_T, a); /* { dg-bogus "field" "uninitialized variable warning" { xfail *-*-* } } */
APPEND(rv, field, PTR_T, b);
APPEND(rv, field, INTEGER_T, c);
diff --git a/gcc/testsuite/gcc.dg/uninit-6.c b/gcc/testsuite/gcc.dg/uninit-6.c
index 009e124fccf..b0f2083ab4b 100644
--- a/gcc/testsuite/gcc.dg/uninit-6.c
+++ b/gcc/testsuite/gcc.dg/uninit-6.c
@@ -39,7 +39,7 @@ make_something(int a, int b, int c)
rv = malloc (sizeof (struct tree));
rv->car = 0;
- APPEND(rv, field, INTEGER_T, a); /* { dg-bogus "field" "uninitialized variable warning" } */
+ APPEND(rv, field, INTEGER_T, a); /* { dg-bogus "field" "uninitialized variable warning" { xfail *-*-* } } */
APPEND(rv, field, PTR_T, b);
APPEND(rv, field, INTEGER_T, c);
diff --git a/gcc/testsuite/gcc.dg/uninit-pr40943.c b/gcc/testsuite/gcc.dg/uninit-pr40943.c
new file mode 100644
index 00000000000..2b6e9131cb1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/uninit-pr40943.c
@@ -0,0 +1,10 @@
+/* PR middle-end/40943 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -Wuninitialized" } */
+
+void
+foo (void)
+{
+ int *p;
+ *p = 3; /* { dg-warning "is used uninitialized" } */
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr40906-1.c b/gcc/testsuite/gcc.target/i386/pr40906-1.c
new file mode 100644
index 00000000000..c14bbfa3a4f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr40906-1.c
@@ -0,0 +1,26 @@
+/* { dg-do run } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-O2 -fomit-frame-pointer -mpush-args -mno-accumulate-outgoing-args" } */
+
+void abort (void);
+
+void __attribute__((noinline))
+f (long double a)
+{
+ if (a != 1.23L)
+ abort ();
+}
+
+int __attribute__((noinline))
+g (long double b)
+{
+ f (b);
+ return 0;
+}
+
+int
+main (void)
+{
+ g (1.23L);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr40906-2.c b/gcc/testsuite/gcc.target/i386/pr40906-2.c
new file mode 100644
index 00000000000..66e146b0ca0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr40906-2.c
@@ -0,0 +1,26 @@
+/* { dg-do run } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-O2 -fomit-frame-pointer -mpush-args -mno-accumulate-outgoing-args -m128bit-long-double" } */
+
+void abort (void);
+
+void __attribute__((noinline))
+f (long double a)
+{
+ if (a != 1.23L)
+ abort ();
+}
+
+int __attribute__((noinline))
+g (long double b)
+{
+ f (b);
+ return 0;
+}
+
+int
+main (void)
+{
+ g (1.23L);
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr40906-3.c b/gcc/testsuite/gcc.target/i386/pr40906-3.c
new file mode 100644
index 00000000000..b639b62996c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr40906-3.c
@@ -0,0 +1,25 @@
+/* { dg-do run { target *-*-linux* } } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-O2 -fomit-frame-pointer -msse2 -mpush-args -mno-accumulate-outgoing-args" } */
+
+#include "sse2-check.h"
+
+void __attribute__((noinline))
+f (__float128 a)
+{
+ if (a != 1.23Q)
+ abort ();
+}
+
+int __attribute__((noinline))
+g (__float128 b)
+{
+ f (b);
+ return 0;
+}
+
+static void
+sse2_test (void)
+{
+ g (1.23Q);
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/pr39902-2.c b/gcc/testsuite/gcc.target/powerpc/pr39902-2.c
new file mode 100644
index 00000000000..463a36c1bee
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr39902-2.c
@@ -0,0 +1,28 @@
+/* Check that simplification "x*(-1)" -> "-x" is not performed for decimal
+ float types. */
+
+/* { dg-do compile { target { powerpc*-*-linux* && powerpc_fprs } } } */
+/* { dg-options "-std=gnu99 -O -mcpu=power6" } */
+/* { dg-final { scan-assembler-not "fneg" } } */
+
+extern _Decimal32 a32, b32;
+extern _Decimal64 a64, b64;
+extern _Decimal128 a128, b128;
+
+void
+foo32 (void)
+{
+ b32 = a32 * -1.0DF;
+}
+
+void
+foo64 (void)
+{
+ b64 = a64 * -1.0DD;
+}
+
+void
+foo128 (void)
+{
+ b128 = a128 * -1.0DL;
+}
diff --git a/gcc/testsuite/gfortran.dg/namelist_40.f90 b/gcc/testsuite/gfortran.dg/namelist_40.f90
index 5e2c9d871a2..d6f896a3956 100644
--- a/gcc/testsuite/gfortran.dg/namelist_40.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_40.f90
@@ -1,4 +1,4 @@
-! { dg-do run { target fd_truncate } }
+! { dg-do run }
! PR33672 Additional runtime checks needed for namelist reads
! Submitted by Jerry DeLisle <jvdelisle@gcc.gnu.org>
@@ -47,7 +47,7 @@ subroutine writenml (astring)
end subroutine writenml
end program namelist_40
-! { dg-output "Multiple sub-objects with non-zero rank in namelist object x(\n|\r\n|\r)" }
+! { dg-output "Multiple sub-objects with non-zero rank in namelist object x%m%ch(\n|\r\n|\r)" }
! { dg-output "Missing colon in substring qualifier for namelist variable x%m%ch(\n|\r\n|\r)" }
! { dg-output "Substring out of range for namelist variable x%m%ch(\n|\r\n|\r)" }
! { dg-output "Bad character in substring qualifier for namelist variable x%m%ch(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/gfortran.dg/namelist_47.f90 b/gcc/testsuite/gfortran.dg/namelist_47.f90
index 8a8dd9d0997..581924720bd 100644
--- a/gcc/testsuite/gfortran.dg/namelist_47.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_47.f90
@@ -1,4 +1,4 @@
-! { dg-do run { target fd_truncate } }
+! { dg-do run }
module nml_47
type :: mt
@@ -45,7 +45,7 @@ subroutine writenml (astring)
end subroutine writenml
end program namelist_47
-! { dg-output "Multiple sub-objects with non-zero rank in namelist object x(\n|\r\n|\r)" }
+! { dg-output "Multiple sub-objects with non-zero rank in namelist object x%m%c012345678901234567890123456789012345678901234567890123456789h(\n|\r\n|\r)" }
! { dg-output "Missing colon in substring qualifier for namelist variable x%m%c012345678901234567890123456789012345678901234567890123456789h(\n|\r\n|\r)" }
! { dg-output "Substring out of range for namelist variable x%m%c012345678901234567890123456789012345678901234567890123456789h(\n|\r\n|\r)" }
! { dg-output "Bad character in substring qualifier for namelist variable x%m%c012345678901234567890123456789012345678901234567890123456789h(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/gfortran.dg/namelist_58.f90 b/gcc/testsuite/gfortran.dg/namelist_58.f90
new file mode 100644
index 00000000000..fcce01653a4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/namelist_58.f90
@@ -0,0 +1,25 @@
+! { dg-do run }
+! PR40853 Error in namelist IO.
+! Test case derived from example given in PR. < jvdelisle@gcc.gnu.org >
+program test
+ implicit none
+ type tao_title_struct
+ character(2) justify
+ end type
+ type tao_plot_page_struct
+ real shape_height_max
+ type (tao_title_struct) title ! Comment this line out and the bug goes away.
+ real size(2)
+ end type
+ type (tao_plot_page_struct) plot_page
+ namelist / params / plot_page
+ open (10, status="scratch")
+ write(10,'(a)')" &params"
+ write(10,'(a)')" plot_page%size=5 , 2,"
+ write(10,'(a)')"/"
+ rewind(10)
+ read (10, nml = params)
+ if (any(plot_page%size .ne. (/ 5, 2 /))) call abort
+ close (10)
+end program
+
diff --git a/gcc/tree-ssa-ifcombine.c b/gcc/tree-ssa-ifcombine.c
index 335fd068540..55b042e5ccc 100644
--- a/gcc/tree-ssa-ifcombine.c
+++ b/gcc/tree-ssa-ifcombine.c
@@ -151,7 +151,7 @@ get_name_for_bit_test (tree candidate)
{
gimple def_stmt = SSA_NAME_DEF_STMT (candidate);
if (is_gimple_assign (def_stmt)
- && gimple_assign_cast_p (def_stmt))
+ && CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def_stmt)))
{
if (TYPE_PRECISION (TREE_TYPE (candidate))
<= TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (def_stmt))))
@@ -162,21 +162,6 @@ get_name_for_bit_test (tree candidate)
return candidate;
}
-/* Helpers for recognize_single_bit_test defined mainly for source code
- formating. */
-
-static int
-operand_precision (tree t)
-{
- return TYPE_PRECISION (TREE_TYPE (t));
-}
-
-static bool
-integral_operand_p (tree t)
-{
- return INTEGRAL_TYPE_P (TREE_TYPE (t));
-}
-
/* Recognize a single bit test pattern in GIMPLE_COND and its defining
statements. Store the name being tested in *NAME and the bit
in *BIT. The GIMPLE_COND computes *NAME & (1 << *BIT).
@@ -212,15 +197,11 @@ recognize_single_bit_test (gimple cond, tree *name, tree *bit)
stmt = SSA_NAME_DEF_STMT (orig_name);
while (is_gimple_assign (stmt)
- && (gimple_assign_ssa_name_copy_p (stmt)
- || (gimple_assign_cast_p (stmt)
- && integral_operand_p (gimple_assign_lhs (stmt))
- && integral_operand_p (gimple_assign_rhs1 (stmt))
- && (operand_precision (gimple_assign_lhs (stmt))
- <= operand_precision (gimple_assign_rhs1 (stmt))))))
- {
- stmt = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (stmt));
- }
+ && ((CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (stmt))
+ && (TYPE_PRECISION (TREE_TYPE (gimple_assign_lhs (stmt)))
+ <= TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (stmt)))))
+ || gimple_assign_ssa_name_copy_p (stmt)))
+ stmt = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (stmt));
/* If we found such, decompose it. */
if (is_gimple_assign (stmt)
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index 8be2961f895..9d8f99deb35 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -1472,7 +1472,12 @@ warn_uninitialized_var (tree *tp, int *walk_subtrees, void *data_)
/* We do not care about LHS. */
if (wi->is_lhs)
- return NULL_TREE;
+ {
+ /* Except for operands of INDIRECT_REF. */
+ if (!INDIRECT_REF_P (t))
+ return NULL_TREE;
+ t = TREE_OPERAND (t, 0);
+ }
switch (TREE_CODE (t))
{
diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog
index 949d1198006..280cea60e3f 100644
--- a/libcpp/po/ChangeLog
+++ b/libcpp/po/ChangeLog
@@ -1,3 +1,7 @@
+2009-08-04 Joseph Myers <joseph@codesourcery.com>
+
+ * es.po: Update.
+
2009-07-25 Joseph Myers <joseph@codesourcery.com>
* nl.po: Update.
diff --git a/libcpp/po/es.po b/libcpp/po/es.po
index a43c1d3cc47..1ae12e2f7f3 100644
--- a/libcpp/po/es.po
+++ b/libcpp/po/es.po
@@ -1,14 +1,14 @@
-# Mensajes en espańol para cpplib-4.4-b20081121
+# Mensajes en espańol para cpplib-4.4.1
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
# This file is distributed under the same license as the gcc package.
# Cristian Othón Martínez Vera <cfuga@itam.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009.
#
msgid ""
msgstr ""
-"Project-Id-Version: cpplib 4.4-b20081121\n"
+"Project-Id-Version: cpplib 4.4.1\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
"POT-Creation-Date: 2009-04-22 16:32+0000\n"
-"PO-Revision-Date: 2009-03-03 23:45-0600\n"
+"PO-Revision-Date: 2009-08-02 21:44-0500\n"
"Last-Translator: Cristian Othón Martínez Vera <cfuga@itam.mx>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
@@ -900,9 +900,9 @@ msgid "while writing precompiled header"
msgstr "al escribir el encabezado precompilado"
#: pch.c:484
-#, fuzzy, c-format
+#, c-format
msgid "%s: not used because `%.*s' is poisoned"
-msgstr "%s: no se usa porque `%s' está definido"
+msgstr "%s: no se usa porque `%.*s' está envenenado"
#: pch.c:506
#, c-format
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 202a8f8f33a..dce83b4b19e 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/40853
+ * io/list_read.c (nml_get_obj_data): Do not set nl
+ pointer to first_nl if nl->next is NULL.
+
2009-07-22 Release Manager
* GCC 4.4.1 released.
diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c
index 3ca63de82e9..ba310e1676d 100644
--- a/libgfortran/io/list_read.c
+++ b/libgfortran/io/list_read.c
@@ -2772,7 +2772,7 @@ get_name:
if (nl->type == GFC_DTYPE_DERIVED)
nml_touch_nodes (nl);
- if (component_flag && nl->var_rank > 0)
+ if (component_flag && nl->var_rank > 0 && nl->next)
nl = first_nl;
/* Make sure no extraneous qualifiers are there. */