aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2009-08-18 22:36:48 +0000
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2009-08-18 22:36:48 +0000
commit768000c7c477576eeaa94b3669c4b6c3fadc8e98 (patch)
tree4c1254603908811413e71c2dd0a41cc0206d29a9
parentaa24f2bb45f8656877cf4e44704735c3c0e16c73 (diff)
Merged with gcc-4_4-branch@150905.var-tracking-assignments-4_4-merge-150905-after
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/var-tracking-assignments-4_4-branch@150913 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--contrib/ChangeLog5
-rw-r--r--gcc/ChangeLog181
-rw-r--r--gcc/ChangeLog.vta4
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/alias.c3
-rw-r--r--gcc/config/alpha/alpha.c15
-rw-r--r--gcc/config/alpha/alpha.md20
-rw-r--r--gcc/config/arm/arm.md4
-rw-r--r--gcc/config/i386/i386.c21
-rw-r--r--gcc/config/i386/sse.md49
-rw-r--r--gcc/config/rs6000/freebsd.h5
-rw-r--r--gcc/config/rs6000/rs6000.c30
-rw-r--r--gcc/config/s390/constraints.md32
-rw-r--r--gcc/config/s390/s390.c215
-rw-r--r--gcc/config/s390/s390.md67
-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/dwarf2out.c40
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/iresolve.c16
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/lang.c50
-rw-r--r--gcc/longlong.h4
-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/ChangeLog219
-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/expr/stmt-expr-1.C36
-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/g++.dg/torture/pr40991.C113
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr40570.c22
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr40964.c10
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr41006-1.c17
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr41006-2.c15
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr41016.c17
-rw-r--r--gcc/testsuite/gcc.dg/debug/20020224-1.c19
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c70
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pr39902.c8
-rw-r--r--gcc/testsuite/gcc.dg/pr40971.c23
-rw-r--r--gcc/testsuite/gcc.dg/pr41033.c24
-rw-r--r--gcc/testsuite/gcc.dg/ssp-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-27.c24
-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.dg/vect/O1-pr41008.c23
-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/i386/pr40934.c15
-rw-r--r--gcc/testsuite/gcc.target/i386/pr40957.c18
-rw-r--r--gcc/testsuite/gcc.target/i386/pr41019.c19
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr39902-2.c28
-rw-r--r--gcc/testsuite/gfortran.dg/intrinsic_4.f9012
-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/testsuite/gfortran.dg/structure_constructor_10.f9028
-rw-r--r--gcc/testsuite/gfortran.dg/transfer_resolve_1.f9021
-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--libdecnumber/ChangeLog6
-rw-r--r--libdecnumber/decCommon.c2
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/list_read.c2
84 files changed, 1982 insertions, 543 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index 403927add77..0b9cf7a69a3 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,8 @@
+2009-08-18 Alexandre Oliva <aoliva@redhat.com>
+
+ * compare-debug: Don't fail just because of .eh_frame
+ differences. Drop .eh_frame relocations too.
+
2009-07-22 Release Manager
* GCC 4.4.1 released.
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 114216e20b3..adc635534f3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,132 @@
+2009-08-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/40971
+ * config/rs6000/rs6000.c (rs6000_legitimize_address): For
+ [DT][FDI]mode ensure the offset isn't 4/8/12 bytes below 0x8000.
+
+2009-08-16 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline:
+ 2009-08-14 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/41019
+ * config/i386/sse.md (SSEMODE124C8): New mode iterator.
+ (vcond<SSEMODEF2P:mode>): Assert that operation is supported by
+ ix86_expand_fp_vcond.
+ (vcond<SSEMODE124C8:mode>): Use SSEMODE124C8 instead of SSEMODE124.
+ Assert that operation is supported by ix86_expand_int_vcond.
+ (vcondu<SSEMODE124C8:mode>): Ditto.
+
+2009-08-16 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/37801
+ * gcc/dwarf2out.c (gen_inlined_subroutine_die): Concentrate on
+ generating inlined subroutine die only. We shouldn't be
+ called for anything else.
+ (gen_block_die): Don't generate inline subroutine debug info for
+ abstract blocks.
+
+2009-08-13 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline:
+ 2009-08-11 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/8603
+ * config/alpha/alpha.md (addsi3): Remove expander.
+ (addsi3): Rename from *addsi3_internal insn pattern.
+ (subsi3): Remove expander.
+ (subsi3): Rename from *subsi3_internal insn pattern.
+
+2009-08-13 Andrey Belevantsev <abel@ispras.ru>
+
+ PR rtl-optimization/41033
+ * alias.c (nonoverlapping_component_refs_p): Punt when strict
+ aliasing is disabled.
+
+2009-08-11 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
+
+ Backport from mainline:
+ 2009-08-10 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
+
+ PR target/41015
+ * longlong.h [__sh__] (udiv_qrnnd): Add T register to clobber list.
+ (sub_ddmmss): Likewise.
+
+2009-08-10 Andreas Tobler <a.tobler@schweiz.org>
+
+ PR bootstrap/41018
+ * config/rs6000/freebsd.h: Define SVR4_ASM_SPEC. Adjust copyright
+ year.
+
+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
+ max-unrolled-insns to 100 for z10 tuning.
+
+2009-07-30 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * config/s390/constraints.md (ZQ, ZR, ZS, ZT): New constraints.
+ (U, W): Constraints are now deprecated and will be removed if we
+ run out of letters.
+ * config/s390/s390.md (U, W): Replaced with ZQZR, ZSZT throughout
+ the file.
+ ("prefetch"): Add the stcmh instruction for prefetching.
+ * config/s390/s390.c (s390_symref_operand_p): Function moved. No
+ changes.
+ (s390_short_displacement): Return always true if compiling for
+ machines not providing the long displacement facility.
+ (s390_mem_constraint): Support the new constraint letter Z.
+ (s390_check_qrst_address): New function.
+
+2009-07-30 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/40577
+ * config/alpha/alpha.c (alpha_expand_unaligned_store): Convert src
+ to DImode when generating insq_le insn.
+
2009-07-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Backport from mainline:
@@ -57,7 +186,7 @@
Backport from mainline:
2009-04-29 Richard Guenther <rguenther@suse.de>
-
+
PR target/39943
* config/i386/i386.c (ix86_vectorize_builtin_conversion): Only
allow conversion to signed integers.
@@ -144,7 +273,7 @@
PR target/40587
* ira.c (build_insn_chain): Use DF_LR_OUT instead of
df_get_live_out.
-
+
2009-07-02 Richard Guenther <rguenther@suse.de>
PR middle-end/40585
@@ -155,9 +284,9 @@
Backport from mainline:
2009-05-11 Martin Jambor <mjambor@suse.cz>
-
+
* ipa-cp.c (ipcp_cloning_candidate_p): Add missing return false.
-
+
2009-06-30 Jakub Jelinek <jakub@redhat.com>
PR c++/40566
@@ -1224,7 +1353,7 @@
2009-03-27 Xinliang David Li <davidxl@google.com>
PR tree-optimization/39548
- * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
+ * tree-ssa-copy.c (copy_prop_visit_phi_node): Add copy
candidate check.
2009-03-27 H.J. Lu <hongjiu.lu@intel.com>
@@ -1240,7 +1369,8 @@
2009-03-27 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR c++/36799
- * ginclude/stdarg.h (va_copy): Define also for __GXX_EXPERIMENTAL_CXX0X__.
+ * ginclude/stdarg.h (va_copy): Define also for
+ __GXX_EXPERIMENTAL_CXX0X__.
2009-03-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
@@ -1382,7 +1512,7 @@
2009-03-23 Bingfeng Mei <bmei@broadcom.com>
- * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
+ * config.gcc (need_64bit_hwint): Make clear that need_64bit_hwint
should be set true if BITS_PER_WORD of target is bigger than 32
2009-03-22 Hans-Peter Nilsson <hp@axis.com>
@@ -2107,7 +2237,7 @@
2009-02-27 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/39308
- * graphite.c (graphite_loop_normal_form): Do not call
+ * graphite.c (graphite_loop_normal_form): Do not call
number_of_iterations_exit from a gcc_assert.
2009-02-27 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
@@ -2206,7 +2336,7 @@
PR c++/38880
* varasm.c (initializer_constant_valid_p) [PLUS_EXPR]: Check
narrowing_initializer_constant_valid_p.
- (narrowing_initializer_constant_valid_p): Don't return
+ (narrowing_initializer_constant_valid_p): Don't return
null_pointer_node for adding a pointer to itself.
2009-02-23 Jan Hubicka <jh@suse.cz>
@@ -2898,7 +3028,7 @@
* c-common.c (handle_tls_model_attribute): Ignore attribute for
non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.
-2009-02-04 Tobias Grosser <grosser@fim.uni-passau.de>
+2009-02-04 Tobias Grosser <grosser@fim.uni-passau.de>
* graphite.c (bb_in_sese_p, sese_build_livein_liveouts_use,
sese_build_livein_liveouts_bb, sese_build_livein_liveouts,
@@ -3226,7 +3356,7 @@
count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
Remove flag_ira.
(finish_spills): Ditto. Remove code for !flag_ira.
-
+
2009-01-29 Kenneth Zadeck <zadeck@naturalbridge.com>
PR middle-end/35854
@@ -3239,8 +3369,7 @@
"eh-ranges" to "eh_ranges".
* lower-subreg.c (pass_lower_subreg): Renamed pass from "subreg"
to "subreg1".
-
-
+
2009-01-29 Andrey Belevantsev <abel@ispras.ru>
Alexander Monakov <amonakov@ispras.ru>
@@ -3613,7 +3742,7 @@
2009-01-20 Sebastian Pop <sebastian.pop@amd.com>
- * common.opt (fgraphite, fgraphite-identity): Add comment for
+ * common.opt (fgraphite, fgraphite-identity): Add comment for
explaining why these options are not documented.
2009-01-20 Sebastian Pop <sebastian.pop@amd.com>
@@ -3735,7 +3864,7 @@
2009-01-16 Sebastian Pop <sebastian.pop@amd.com>
Tobias Grosser <tobi.grosser@amd.com>
- * graphite.c (add_conditions_to_domain): Add the loops to
+ * graphite.c (add_conditions_to_domain): Add the loops to
the dimension of the iteration domain. Do copy the domain
only when it exists.
(build_scop_conditions_1): Do not call add_conditions_to_domain.
@@ -3756,7 +3885,7 @@
* dce.c (delete_unmarked_insns): Reversed the order that insns are
examined before deleting them.
-
+
2009-01-16 Richard Earnshaw <rearnsha@arm.com>
* function.c (aggregate_value_p): Correctly extract the function
@@ -3796,7 +3925,7 @@
2009-01-15 Kenneth Zadeck <zadeck@naturalbridge.com>
* dce.c (find_call_stack_args, delete_unmarked_insns): Fixed comments.
-
+
2009-01-14 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/38245
@@ -3831,7 +3960,7 @@
* graphite.c (get_vdef_before_scop, scop_adjust_vphi): New.
(scop_adjust_phis_for_liveouts): Call scop_adjust_vphi.
(gloog): Do not call cleanup_tree_cfg.
- (graphite_transform_loops): Call cleanup_tree_cfg after all
+ (graphite_transform_loops): Call cleanup_tree_cfg after all
scops have been code generated.
2009-01-14 Basile Starynkevitch <basile@starynkevitch.net>
@@ -3972,7 +4101,7 @@
2009-01-11 Laurent GUERBY <laurent@guerby.net>
* doc/sourcebuild.texi (Source Tree): Move up intl and fixinc.
-
+
2009-01-11 Markus Schoepflin <markus.schoepflin@comsoft.de>
PR debug/7055
@@ -4095,7 +4224,7 @@
PR tree-optimization/37194
* tree-vect-transform.c (vect_estimate_min_profitable_iters):
- Don't add the cost of cost model guard in prologue to scalar
+ Don't add the cost of cost model guard in prologue to scalar
outside cost in case of known number of iterations.
2009-01-07 Nathan Froyd <froydnj@codesourcery.com>
@@ -4294,9 +4423,9 @@
* params.def (ira-max-conflict-table-size): New.
* doc/invoke.texi (ira-max-conflict-table-size): Decribe.
-
+
* ira.h (ira_conflicts_p): New external definition.
-
+
* ira-conflicts.c (build_conflict_bit_table): Do not build too big
table. Report this. Return result of building.
(ira_build_conflicts): Use ira_conflicts_p. Check result of
@@ -4304,13 +4433,13 @@
* ira-color.c (fast_allocation): Use num instead of ira_allocnos_num.
(ira_color): Use ira_conflicts_p.
-
+
* global.c: Include ira.h.
(pseudo_for_reload_consideration_p, build_insn_chain): Use
ira_conflicts_p.
* Makefile.in (global.o): Add ira.h.
-
+
* ira-build.c (mark_all_loops_for_removal,
propagate_some_info_from_allocno): New.
(remove_unnecessary_allocnos): Call
@@ -4328,7 +4457,7 @@
* reload1.c (compute_use_by_pseudos, reload, count_pseudo,
count_spilled_pseudo, find_reg, alter_reg, finish_spills,
emit_input_reload_insns, delete_output_reload): Use ira_conflicts_p.
-
+
2009-01-06 Ben Elliston <bje@au.ibm.com>
* gengtype-lex.l (YY_NO_INPUT): Define.
@@ -4518,7 +4647,7 @@
* df-problems.c (df_lr_finalize): Add recursive call to resolve lr
problem if fast dce is able to remove any instructions.
* dce.c (dce_process_block): Fix dump message.
-
+
2009-01-02 Mark Mitchell <mark@codesourcery.com>
PR 33649
diff --git a/gcc/ChangeLog.vta b/gcc/ChangeLog.vta
index 054471b144c..aafc9c391be 100644
--- a/gcc/ChangeLog.vta
+++ b/gcc/ChangeLog.vta
@@ -1,5 +1,9 @@
2009-08-18 Alexandre Oliva <aoliva@redhat.com>
+ Merged with gcc-4_4-branch@150905.
+
+2009-08-18 Alexandre Oliva <aoliva@redhat.com>
+
* testsuite/gcc.dg/guality/guality.h (main): Error-check GDB pipe
operations.
(guality_check): Likewise. Update comment. Time-out GDB attach.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index dbbb8700ffb..13fb2c60b85 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20090730
+20090818
diff --git a/gcc/alias.c b/gcc/alias.c
index 2b1b380898a..ea28fce0fd7 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -1932,6 +1932,9 @@ nonoverlapping_component_refs_p (const_tree x, const_tree y)
{
const_tree fieldx, fieldy, typex, typey, orig_y;
+ if (!flag_strict_aliasing)
+ return false;
+
do
{
/* The comparison has to be done at a common type, since we don't
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 5ffb8f967ff..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;
@@ -3542,7 +3553,7 @@ alpha_expand_unaligned_store (rtx dst, rtx src,
emit_insn (gen_insll_le (insl, gen_lowpart (SImode, src), addr));
break;
case 8:
- emit_insn (gen_insql_le (insl, src, addr));
+ emit_insn (gen_insql_le (insl, gen_lowpart (DImode, src), addr));
break;
}
}
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index 14966499ea6..223143cd2ad 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -256,16 +256,7 @@
(sign_extend:DI (match_dup 1)))]
"")
-;; Don't say we have addsi3 if optimizing. This generates better code. We
-;; have the anonymous addsi3 pattern below in case combine wants to make it.
-(define_expand "addsi3"
- [(set (match_operand:SI 0 "register_operand" "")
- (plus:SI (match_operand:SI 1 "reg_or_0_operand" "")
- (match_operand:SI 2 "add_operand" "")))]
- "! optimize"
- "")
-
-(define_insn "*addsi_internal"
+(define_insn "addsi3"
[(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
(plus:SI (match_operand:SI 1 "reg_or_0_operand" "%rJ,rJ,rJ,rJ")
(match_operand:SI 2 "add_operand" "rI,O,K,L")))]
@@ -619,14 +610,7 @@
""
"subqv $31,%1,%0")
-(define_expand "subsi3"
- [(set (match_operand:SI 0 "register_operand" "")
- (minus:SI (match_operand:SI 1 "reg_or_0_operand" "")
- (match_operand:SI 2 "reg_or_8bit_operand" "")))]
- "! optimize"
- "")
-
-(define_insn "*subsi_internal"
+(define_insn "subsi3"
[(set (match_operand:SI 0 "register_operand" "=r")
(minus:SI (match_operand:SI 1 "reg_or_0_operand" "rJ")
(match_operand:SI 2 "reg_or_8bit_operand" "rI")))]
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 3005b625dcd..3406117f0f6 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -16311,10 +16311,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. */
@@ -16384,7 +16394,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/config/i386/sse.md b/gcc/config/i386/sse.md
index 7cdb24e13af..c2dd7f13172 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -64,6 +64,10 @@
(define_mode_iterator SSEMODE4S [V4SF V4SI])
(define_mode_iterator SSEMODE2D [V2DF V2DI])
+;; Modes handled by integer vcond pattern
+(define_mode_iterator SSEMODE124C8 [V16QI V8HI V4SI
+ (V2DI "TARGET_SSE4_2 || TARGET_SSE5")])
+
;; Mapping from float mode to required SSE level
(define_mode_attr sse [(SF "sse") (DF "sse2") (V4SF "sse") (V2DF "sse2")])
@@ -1493,10 +1497,9 @@
(match_operand:SSEMODEF2P 2 "general_operand" "")))]
"SSE_VEC_FLOAT_MODE_P (<MODE>mode)"
{
- if (ix86_expand_fp_vcond (operands))
- DONE;
- else
- FAIL;
+ bool ok = ix86_expand_fp_vcond (operands);
+ gcc_assert (ok);
+ DONE;
})
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -5837,35 +5840,33 @@
(set_attr "mode" "TI")])
(define_expand "vcond<mode>"
- [(set (match_operand:SSEMODEI 0 "register_operand" "")
- (if_then_else:SSEMODEI
+ [(set (match_operand:SSEMODE124C8 0 "register_operand" "")
+ (if_then_else:SSEMODE124C8
(match_operator 3 ""
- [(match_operand:SSEMODEI 4 "nonimmediate_operand" "")
- (match_operand:SSEMODEI 5 "nonimmediate_operand" "")])
- (match_operand:SSEMODEI 1 "general_operand" "")
- (match_operand:SSEMODEI 2 "general_operand" "")))]
+ [(match_operand:SSEMODE124C8 4 "nonimmediate_operand" "")
+ (match_operand:SSEMODE124C8 5 "nonimmediate_operand" "")])
+ (match_operand:SSEMODE124C8 1 "general_operand" "")
+ (match_operand:SSEMODE124C8 2 "general_operand" "")))]
"TARGET_SSE2"
{
- if (ix86_expand_int_vcond (operands))
- DONE;
- else
- FAIL;
+ bool ok = ix86_expand_int_vcond (operands);
+ gcc_assert (ok);
+ DONE;
})
(define_expand "vcondu<mode>"
- [(set (match_operand:SSEMODEI 0 "register_operand" "")
- (if_then_else:SSEMODEI
+ [(set (match_operand:SSEMODE124C8 0 "register_operand" "")
+ (if_then_else:SSEMODE124C8
(match_operator 3 ""
- [(match_operand:SSEMODEI 4 "nonimmediate_operand" "")
- (match_operand:SSEMODEI 5 "nonimmediate_operand" "")])
- (match_operand:SSEMODEI 1 "general_operand" "")
- (match_operand:SSEMODEI 2 "general_operand" "")))]
+ [(match_operand:SSEMODE124C8 4 "nonimmediate_operand" "")
+ (match_operand:SSEMODE124C8 5 "nonimmediate_operand" "")])
+ (match_operand:SSEMODE124C8 1 "general_operand" "")
+ (match_operand:SSEMODE124C8 2 "general_operand" "")))]
"TARGET_SSE2"
{
- if (ix86_expand_int_vcond (operands))
- DONE;
- else
- FAIL;
+ bool ok = ix86_expand_int_vcond (operands);
+ gcc_assert (ok);
+ DONE;
})
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/gcc/config/rs6000/freebsd.h b/gcc/config/rs6000/freebsd.h
index b4dea55417d..bc2a10bb7a3 100644
--- a/gcc/config/rs6000/freebsd.h
+++ b/gcc/config/rs6000/freebsd.h
@@ -1,5 +1,5 @@
/* Definitions for PowerPC running FreeBSD using the ELF format
- Copyright (C) 2001, 2003, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2003, 2007, 2009 Free Software Foundation, Inc.
Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
This file is part of GCC.
@@ -69,3 +69,6 @@
/* Override rs6000.h definition. */
#undef ASM_APP_OFF
#define ASM_APP_OFF "#NO_APP\n"
+/* Define SVR4_ASM_SPEC, we use GAS by default. See svr4.h for details. */
+#define SVR4_ASM_SPEC \
+ "%{v:-V} %{Wa,*:%*}"
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 23a9be17284..8e0d9a4021d 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -3812,6 +3812,8 @@ rtx
rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
enum machine_mode mode)
{
+ unsigned int extra = 0;
+
if (GET_CODE (x) == SYMBOL_REF)
{
enum tls_model model = SYMBOL_REF_TLS_MODEL (x);
@@ -3819,10 +3821,32 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
return rs6000_legitimize_tls_address (x, model);
}
+ switch (mode)
+ {
+ case DFmode:
+ case DDmode:
+ extra = 4;
+ break;
+ case DImode:
+ if (!TARGET_POWERPC64)
+ extra = 4;
+ break;
+ case TFmode:
+ case TDmode:
+ extra = 12;
+ break;
+ case TImode:
+ extra = TARGET_POWERPC64 ? 8 : 12;
+ break;
+ default:
+ break;
+ }
+
if (GET_CODE (x) == PLUS
&& GET_CODE (XEXP (x, 0)) == REG
&& GET_CODE (XEXP (x, 1)) == CONST_INT
- && (unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 1)) + 0x8000) >= 0x10000
+ && ((unsigned HOST_WIDE_INT) (INTVAL (XEXP (x, 1)) + 0x8000)
+ >= 0x10000 - extra)
&& !((TARGET_POWERPC64
&& (mode == DImode || mode == TImode)
&& (INTVAL (XEXP (x, 1)) & 3) != 0)
@@ -3835,10 +3859,12 @@ rs6000_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
HOST_WIDE_INT high_int, low_int;
rtx sum;
low_int = ((INTVAL (XEXP (x, 1)) & 0xffff) ^ 0x8000) - 0x8000;
+ if (low_int >= 0x8000 - extra)
+ low_int = 0;
high_int = INTVAL (XEXP (x, 1)) - low_int;
sum = force_operand (gen_rtx_PLUS (Pmode, XEXP (x, 0),
GEN_INT (high_int)), 0);
- return gen_rtx_PLUS (Pmode, sum, GEN_INT (low_int));
+ return plus_constant (sum, low_int);
}
else if (GET_CODE (x) == PLUS
&& GET_CODE (XEXP (x, 0)) == REG
diff --git a/gcc/config/s390/constraints.md b/gcc/config/s390/constraints.md
index 4d37094e2cf..00179954b51 100644
--- a/gcc/config/s390/constraints.md
+++ b/gcc/config/s390/constraints.md
@@ -66,9 +66,14 @@
;; B -- Multiple letter constraint followed by Q, R, S, or T:
;; Memory reference of the type specified by second letter that
;; does *not* refer to a literal pool entry.
-;; U -- Pointer with short displacement.
-;; W -- Pointer with long displacement.
+;; U -- Pointer with short displacement. (deprecated - use ZQZR)
+;; W -- Pointer with long displacement. (deprecated - use ZSZT)
;; Y -- Shift count operand.
+;; ZQ -- Pointer without index register and with short displacement.
+;; ZR -- Pointer with index register and short displacement.
+;; ZS -- Pointer without index register but with long displacement.
+;; ZT -- Pointer with index register and long displacement.
+;;
;;
@@ -462,11 +467,26 @@ constraint."
(define_address_constraint "U"
- "Pointer with short displacement"
+ "Pointer with short displacement. (deprecated - use ZQZR)"
(match_test "s390_mem_constraint (\"U\", op)"))
-
-
(define_address_constraint "W"
- "Pointer with long displacement"
+ "Pointer with long displacement. (deprecated - use ZSZT)"
(match_test "s390_mem_constraint (\"W\", op)"))
+
+
+(define_address_constraint "ZQ"
+ "Pointer without index register and with short displacement."
+ (match_test "s390_mem_constraint (\"ZQ\", op)"))
+
+(define_address_constraint "ZR"
+ "Pointer with index register and short displacement."
+ (match_test "s390_mem_constraint (\"ZR\", op)"))
+
+(define_address_constraint "ZS"
+ "Pointer without index register but with long displacement."
+ (match_test "s390_mem_constraint (\"ZS\", op)"))
+
+(define_address_constraint "ZT"
+ "Pointer with index register and long displacement."
+ (match_test "s390_mem_constraint (\"ZT\", op)"))
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index eb08828c29b..b057d24bf22 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3. If not see
#include "optabs.h"
#include "gimple.h"
#include "df.h"
+#include "params.h"
/* Define the specific costs for a given cpu. */
@@ -1641,6 +1642,10 @@ override_options (void)
if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
target_flags |= MASK_LONG_DOUBLE_128;
#endif
+
+ if (s390_tune == PROCESSOR_2097_Z10
+ && !PARAM_SET_P (PARAM_MAX_UNROLLED_INSNS))
+ set_param_value ("max-unrolled-insns", 100);
}
/* Map for smallest class containing reg regno. */
@@ -1678,6 +1683,11 @@ s390_short_displacement (rtx disp)
if (!disp)
return true;
+ /* Without the long displacement facility we don't need to
+ distingiush between long and short displacement. */
+ if (!TARGET_LONG_DISPLACEMENT)
+ return true;
+
/* Integer displacement in range. */
if (GET_CODE (disp) == CONST_INT)
return INTVAL (disp) >= 0 && INTVAL (disp) < 4096;
@@ -2046,79 +2056,93 @@ s390_legitimate_address_without_index_p (rtx op)
}
-/* Evaluates constraint strings described by the regular expression
- ([A|B](Q|R|S|T))|U|W and returns 1 if OP is a valid operand for the
- constraint given in STR, or 0 else. */
+/* Return true if ADDR is of kind symbol_ref or symbol_ref + const_int
+ and return these parts in SYMREF and ADDEND. You can pass NULL in
+ SYMREF and/or ADDEND if you are not interested in these values. */
-int
-s390_mem_constraint (const char *str, rtx op)
+static bool
+s390_symref_operand_p (rtx addr, rtx *symref, HOST_WIDE_INT *addend)
{
- struct s390_address addr;
- char c = str[0];
+ HOST_WIDE_INT tmpaddend = 0;
- /* Check for offsettable variants of memory constraints. */
- if (c == 'A')
+ if (GET_CODE (addr) == CONST)
+ addr = XEXP (addr, 0);
+
+ if (GET_CODE (addr) == PLUS)
{
- /* Only accept non-volatile MEMs. */
- if (!MEM_P (op) || MEM_VOLATILE_P (op))
- return 0;
+ if (GET_CODE (XEXP (addr, 0)) == SYMBOL_REF
+ && CONST_INT_P (XEXP (addr, 1)))
+ {
+ tmpaddend = INTVAL (XEXP (addr, 1));
+ addr = XEXP (addr, 0);
+ }
+ else
+ return false;
+ }
+ else
+ if (GET_CODE (addr) != SYMBOL_REF)
+ return false;
- if ((reload_completed || reload_in_progress)
- ? !offsettable_memref_p (op) : !offsettable_nonstrict_memref_p (op))
- return 0;
+ if (symref)
+ *symref = addr;
+ if (addend)
+ *addend = tmpaddend;
- c = str[1];
- }
+ return true;
+}
+
+
+/* Return true if the address in OP is valid for constraint letter C
+ if wrapped in a MEM rtx. Set LIT_POOL_OK to true if it literal
+ pool MEMs should be accepted. Only the Q, R, S, T constraint
+ letters are allowed for C. */
+
+static int
+s390_check_qrst_address (char c, rtx op, bool lit_pool_ok)
+{
+ struct s390_address addr;
+ bool decomposed = false;
- /* Check for non-literal-pool variants of memory constraints. */
- else if (c == 'B')
+ /* This check makes sure that no symbolic address (except literal
+ pool references) are accepted by the R or T constraints. */
+ if (s390_symref_operand_p (op, NULL, NULL))
{
- if (GET_CODE (op) != MEM)
+ if (!lit_pool_ok)
return 0;
- if (!s390_decompose_address (XEXP (op, 0), &addr))
+ if (!s390_decompose_address (op, &addr))
return 0;
- if (addr.literal_pool)
+ if (!addr.literal_pool)
return 0;
-
- c = str[1];
+ decomposed = true;
}
switch (c)
{
- case 'Q':
- if (GET_CODE (op) != MEM)
- return 0;
- if (!s390_decompose_address (XEXP (op, 0), &addr))
+ case 'Q': /* no index short displacement */
+ if (!decomposed && !s390_decompose_address (op, &addr))
return 0;
if (addr.indx)
return 0;
-
- if (TARGET_LONG_DISPLACEMENT)
- {
- if (!s390_short_displacement (addr.disp))
- return 0;
- }
- break;
-
- case 'R':
- if (GET_CODE (op) != MEM)
+ if (!s390_short_displacement (addr.disp))
return 0;
+ break;
+ case 'R': /* with index short displacement */
if (TARGET_LONG_DISPLACEMENT)
{
- if (!s390_decompose_address (XEXP (op, 0), &addr))
+ if (!decomposed && !s390_decompose_address (op, &addr))
return 0;
if (!s390_short_displacement (addr.disp))
return 0;
}
+ /* Any invalid address here will be fixed up by reload,
+ so accept it for the most generic constraint. */
break;
- case 'S':
+ case 'S': /* no index long displacement */
if (!TARGET_LONG_DISPLACEMENT)
return 0;
- if (GET_CODE (op) != MEM)
- return 0;
- if (!s390_decompose_address (XEXP (op, 0), &addr))
+ if (!decomposed && !s390_decompose_address (op, &addr))
return 0;
if (addr.indx)
return 0;
@@ -2126,52 +2150,74 @@ s390_mem_constraint (const char *str, rtx op)
return 0;
break;
- case 'T':
+ case 'T': /* with index long displacement */
if (!TARGET_LONG_DISPLACEMENT)
return 0;
- if (GET_CODE (op) != MEM)
- return 0;
- if (!s390_decompose_address (XEXP (op, 0), &addr))
- return 0;
- if (s390_short_displacement (addr.disp))
+ /* Any invalid address here will be fixed up by reload,
+ so accept it for the most generic constraint. */
+ if ((decomposed || s390_decompose_address (op, &addr))
+ && s390_short_displacement (addr.disp))
return 0;
break;
+ default:
+ return 0;
+ }
+ return 1;
+}
- case 'U':
- if (TARGET_LONG_DISPLACEMENT)
- {
- if (!s390_decompose_address (op, &addr))
- return 0;
- if (!s390_short_displacement (addr.disp))
- return 0;
- }
- break;
- case 'W':
- if (!TARGET_LONG_DISPLACEMENT)
+/* Evaluates constraint strings described by the regular expression
+ ([A|B|Z](Q|R|S|T))|U|W|Y and returns 1 if OP is a valid operand for
+ the constraint given in STR, or 0 else. */
+
+int
+s390_mem_constraint (const char *str, rtx op)
+{
+ char c = str[0];
+
+ switch (c)
+ {
+ case 'A':
+ /* Check for offsettable variants of memory constraints. */
+ if (!MEM_P (op) || MEM_VOLATILE_P (op))
return 0;
- if (!s390_decompose_address (op, &addr))
+ if ((reload_completed || reload_in_progress)
+ ? !offsettable_memref_p (op) : !offsettable_nonstrict_memref_p (op))
return 0;
- if (s390_short_displacement (addr.disp))
+ return s390_check_qrst_address (str[1], XEXP (op, 0), true);
+ case 'B':
+ /* Check for non-literal-pool variants of memory constraints. */
+ if (!MEM_P (op))
return 0;
- break;
-
+ return s390_check_qrst_address (str[1], XEXP (op, 0), false);
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ if (GET_CODE (op) != MEM)
+ return 0;
+ return s390_check_qrst_address (c, XEXP (op, 0), true);
+ case 'U':
+ return (s390_check_qrst_address ('Q', op, true)
+ || s390_check_qrst_address ('R', op, true));
+ case 'W':
+ return (s390_check_qrst_address ('S', op, true)
+ || s390_check_qrst_address ('T', op, true));
case 'Y':
/* Simply check for the basic form of a shift count. Reload will
take care of making sure we have a proper base register. */
if (!s390_decompose_shift_count (op, NULL, NULL))
return 0;
break;
-
+ case 'Z':
+ return s390_check_qrst_address (str[1], op, true);
default:
return 0;
}
-
return 1;
}
-
/* Evaluates constraint strings starting with letter O. Input
parameter C is the second letter following the "O" in the constraint
string. Returns 1 if VALUE meets the respective constraint and 0
@@ -2789,41 +2835,6 @@ s390_preferred_reload_class (rtx op, enum reg_class rclass)
return rclass;
}
-/* Return true if ADDR is of kind symbol_ref or symbol_ref + const_int
- and return these parts in SYMREF and ADDEND. You can pass NULL in
- SYMREF and/or ADDEND if you are not interested in these values. */
-
-static bool
-s390_symref_operand_p (rtx addr, rtx *symref, HOST_WIDE_INT *addend)
-{
- HOST_WIDE_INT tmpaddend = 0;
-
- if (GET_CODE (addr) == CONST)
- addr = XEXP (addr, 0);
-
- if (GET_CODE (addr) == PLUS)
- {
- if (GET_CODE (XEXP (addr, 0)) == SYMBOL_REF
- && CONST_INT_P (XEXP (addr, 1)))
- {
- tmpaddend = INTVAL (XEXP (addr, 1));
- addr = XEXP (addr, 0);
- }
- else
- return false;
- }
- else
- if (GET_CODE (addr) != SYMBOL_REF)
- return false;
-
- if (symref)
- *symref = addr;
- if (addend)
- *addend = tmpaddend;
-
- return true;
-}
-
/* Return true if ADDR is SYMBOL_REF + addend with addend being a
multiple of ALIGNMENT and the SYMBOL_REF being naturally
aligned. */
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 80d334bd276..5f61c09e3e0 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -1470,7 +1470,7 @@
(define_insn "*la_64"
[(set (match_operand:DI 0 "register_operand" "=d,d")
- (match_operand:QI 1 "address_operand" "U,W"))]
+ (match_operand:QI 1 "address_operand" "ZQZR,ZSZT"))]
"TARGET_64BIT"
"@
la\t%0,%a1
@@ -1653,7 +1653,7 @@
(define_insn "*la_31"
[(set (match_operand:SI 0 "register_operand" "=d,d")
- (match_operand:QI 1 "address_operand" "U,W"))]
+ (match_operand:QI 1 "address_operand" "ZQZR,ZSZT"))]
"!TARGET_64BIT && legitimate_la_operand_p (operands[1])"
"@
la\t%0,%a1
@@ -1688,7 +1688,7 @@
(define_insn "*la_31_and"
[(set (match_operand:SI 0 "register_operand" "=d,d")
- (and:SI (match_operand:QI 1 "address_operand" "U,W")
+ (and:SI (match_operand:QI 1 "address_operand" "ZQZR,ZSZT")
(const_int 2147483647)))]
"!TARGET_64BIT"
"@
@@ -1714,7 +1714,7 @@
(define_insn "force_la_31"
[(set (match_operand:SI 0 "register_operand" "=d,d")
- (match_operand:QI 1 "address_operand" "U,W"))
+ (match_operand:QI 1 "address_operand" "ZQZR,ZSZT"))
(use (const_int 0))]
"!TARGET_64BIT"
"@
@@ -7407,7 +7407,7 @@
[(set (pc)
(if_then_else
(match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)])
- (match_operand 0 "address_operand" "U")
+ (match_operand 0 "address_operand" "ZQZR")
(pc)))]
""
{
@@ -7471,7 +7471,7 @@
(if_then_else
(match_operator 1 "s390_comparison" [(reg CC_REGNUM) (const_int 0)])
(pc)
- (match_operand 0 "address_operand" "U")))]
+ (match_operand 0 "address_operand" "ZQZR")))]
""
{
if (get_attr_op_type (insn) == OP_TYPE_RR)
@@ -7660,7 +7660,7 @@
(if_then_else
(ne (match_operand:SI 1 "register_operand" "d")
(const_int 1))
- (match_operand 0 "address_operand" "U")
+ (match_operand 0 "address_operand" "ZQZR")
(pc)))
(set (match_operand:SI 2 "register_operand" "=1")
(plus:SI (match_dup 1) (const_int -1)))
@@ -7771,7 +7771,7 @@
;
(define_insn "indirect_jump"
- [(set (pc) (match_operand 0 "address_operand" "U"))]
+ [(set (pc) (match_operand 0 "address_operand" "ZQZR"))]
""
{
if (get_attr_op_type (insn) == OP_TYPE_RR)
@@ -7790,7 +7790,7 @@
;
(define_insn "casesi_jump"
- [(set (pc) (match_operand 0 "address_operand" "U"))
+ [(set (pc) (match_operand 0 "address_operand" "ZQZR"))
(use (label_ref (match_operand 1 "" "")))]
""
{
@@ -8012,7 +8012,7 @@
(set_attr "type" "jsr")])
(define_insn "*basr"
- [(call (mem:QI (match_operand 0 "address_operand" "U"))
+ [(call (mem:QI (match_operand 0 "address_operand" "ZQZR"))
(match_operand 1 "const_int_operand" "n"))
(clobber (match_operand 2 "register_operand" "=r"))]
"!SIBLING_CALL_P (insn) && GET_MODE (operands[2]) == Pmode"
@@ -8070,7 +8070,7 @@
(define_insn "*basr_r"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand 1 "address_operand" "U"))
+ (call (mem:QI (match_operand 1 "address_operand" "ZQZR"))
(match_operand 2 "const_int_operand" "n")))
(clobber (match_operand 3 "register_operand" "=r"))]
"!SIBLING_CALL_P (insn) && GET_MODE (operands[3]) == Pmode"
@@ -8170,7 +8170,7 @@
(define_insn "*basr_tls"
[(set (match_operand 0 "" "")
- (call (mem:QI (match_operand 1 "address_operand" "U"))
+ (call (mem:QI (match_operand 1 "address_operand" "ZQZR"))
(match_operand 2 "const_int_operand" "n")))
(clobber (match_operand 3 "register_operand" "=r"))
(use (match_operand 4 "" ""))]
@@ -8720,27 +8720,32 @@
;
(define_insn "prefetch"
- [(prefetch (match_operand 0 "address_operand" "UW,X")
- (match_operand:SI 1 "const_int_operand" "n,n")
- (match_operand:SI 2 "const_int_operand" "n,n"))]
- "TARGET_Z10"
+ [(prefetch (match_operand 0 "address_operand" "ZQZS,ZRZT,X")
+ (match_operand:SI 1 "const_int_operand" " n, n,n")
+ (match_operand:SI 2 "const_int_operand" " n, n,n"))]
+ "TARGET_ZARCH && s390_tune == PROCESSOR_2097_Z10"
{
- if (larl_operand (operands[0], Pmode))
- return INTVAL (operands[1]) == 1 ? "pfdrl\t2,%a0" : "pfdrl\t1,%a0";
-
- if (s390_mem_constraint ("W", operands[0])
- || s390_mem_constraint ("U", operands[0]))
- return INTVAL (operands[1]) == 1 ? "pfd\t2,%a0" : "pfd\t1,%a0";
-
- /* This point might be reached if op0 is a larl operand with an
- uneven addend. In this case we simply omit issuing a prefetch
- instruction. */
-
- return "";
+ switch (which_alternative)
+ {
+ case 0:
+ return INTVAL (operands[1]) == 1 ? "stcmh\t2,0,%a0" : "stcmh\t1,0,%a0";
+ case 1:
+ return INTVAL (operands[1]) == 1 ? "pfd\t2,%a0" : "pfd\t1,%a0";
+ case 2:
+ if (larl_operand (operands[0], Pmode))
+ return INTVAL (operands[1]) == 1 ? "pfdrl\t2,%a0" : "pfdrl\t1,%a0";
+ default:
+
+ /* This might be reached for symbolic operands with an odd
+ addend. We simply omit the prefetch for such rare cases. */
+
+ return "";
+ }
}
- [(set_attr "type" "load,larl")
- (set_attr "op_type" "RXY,RIL")
- (set_attr "z10prop" "z10_super")])
+ [(set_attr "type" "store,load,larl")
+ (set_attr "op_type" "RSY,RXY,RIL")
+ (set_attr "z10prop" "z10_super")
+ (set_attr "cpu_facility" "*,z10,z10")])
;
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 0821c8b1db4..1b6df47fb66 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/dwarf2out.c b/gcc/dwarf2out.c
index 40e9f6951da..38e1aa5953d 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -14975,7 +14975,13 @@ gen_lexical_block_die (tree stmt, dw_die_ref context_die, int depth)
static void
gen_inlined_subroutine_die (tree stmt, dw_die_ref context_die, int depth)
{
- tree decl = block_ultimate_origin (stmt);
+ tree decl;
+
+ /* The instance of function that is effectively being inlined shall not
+ be abstract. */
+ gcc_assert (! BLOCK_ABSTRACT (stmt));
+
+ decl = block_ultimate_origin (stmt);
/* Emit info for the abstract instance first, if we haven't yet. We
must emit this even if the block is abstract, otherwise when we
@@ -14996,20 +15002,6 @@ gen_inlined_subroutine_die (tree stmt, dw_die_ref context_die, int depth)
decls_for_scope (stmt, subr_die, depth);
current_function_has_inlines = 1;
}
- else
- /* We may get here if we're the outer block of function A that was
- inlined into function B that was inlined into function C. When
- generating debugging info for C, dwarf2out_abstract_function(B)
- would mark all inlined blocks as abstract, including this one.
- So, we wouldn't (and shouldn't) expect labels to be generated
- for this one. Instead, just emit debugging info for
- declarations within the block. This is particularly important
- in the case of initializers of arguments passed from B to us:
- if they're statement expressions containing declarations, we
- wouldn't generate dies for their abstract variables, and then,
- when generating dies for the real variables, we'd die (pun
- intended :-) */
- gen_lexical_block_die (stmt, context_die, depth);
}
/* Generate a DIE for a field in a record, or structure. */
@@ -15636,7 +15628,23 @@ gen_block_die (tree stmt, dw_die_ref context_die, int depth)
if (must_output_die)
{
if (inlined_func)
- gen_inlined_subroutine_die (stmt, context_die, depth);
+ {
+ /* If STMT block is abstract, that means we have been called
+ indirectly from dwarf2out_abstract_function.
+ That function rightfully marks the descendent blocks (of
+ the abstract function it is dealing with) as being abstract,
+ precisely to prevent us from emitting any
+ DW_TAG_inlined_subroutine DIE as a descendent
+ of an abstract function instance. So in that case, we should
+ not call gen_inlined_subroutine_die.
+
+ Later though, when cgraph asks dwarf2out to emit info
+ for the concrete instance of the function decl into which
+ the concrete instance of STMT got inlined, the later will lead
+ to the generation of a DW_TAG_inlined_subroutine DIE. */
+ if (! BLOCK_ABSTRACT (stmt))
+ gen_inlined_subroutine_die (stmt, context_die, depth);
+ }
else
gen_lexical_block_die (stmt, context_die, depth);
}
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b9b4294743b..851bb80f6b0 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-16 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/40847
+ * iresolve.c (gfc_resolve_transfer): Correct error in 'mold'
+ character length for case where length expresson is NULL.
+
2009-07-29 Tobias Burnus <burnus@net-b.de>
PR fortran/40851
diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c
index 619d7e9546a..48d7efe1407 100644
--- a/gcc/fortran/iresolve.c
+++ b/gcc/fortran/iresolve.c
@@ -2346,9 +2346,19 @@ gfc_resolve_transfer (gfc_expr *f, gfc_expr *source ATTRIBUTE_UNUSED,
/* TODO: Make this do something meaningful. */
static char transfer0[] = "__transfer0", transfer1[] = "__transfer1";
- if (mold->ts.type == BT_CHARACTER && !mold->ts.cl->length
- && !(mold->expr_type == EXPR_VARIABLE && mold->symtree->n.sym->attr.dummy))
- mold->ts.cl->length = gfc_int_expr (mold->value.character.length);
+ if (mold->ts.type == BT_CHARACTER
+ && !mold->ts.cl->length
+ && gfc_is_constant_expr (mold))
+ {
+ int len;
+ if (mold->expr_type == EXPR_CONSTANT)
+ mold->ts.cl->length = gfc_int_expr (mold->value.character.length);
+ else
+ {
+ len = mold->value.constructor->expr->value.character.length;
+ mold->ts.cl->length = gfc_int_expr (len);
+ }
+ }
f->ts = mold->ts;
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 48e80403e3f..02c22386860 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-11 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/40990
+ * lang.c (put_decl_node): Outputs different level of information
+ depending on the verbosity level.
+
2009-07-22 Release Manager
* GCC 4.4.1 released.
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index 2a962c04736..ba646d6589c 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -53,7 +53,7 @@ static bool java_post_options (const char **);
static int java_handle_option (size_t scode, const char *arg, int value);
static void put_decl_string (const char *, int);
-static void put_decl_node (tree);
+static void put_decl_node (tree, int);
static void java_print_error_function (diagnostic_context *, const char *,
diagnostic_info *);
static int merge_init_test_initialization (void * *, void *);
@@ -355,10 +355,13 @@ put_decl_string (const char *str, int len)
decl_bufpos += len;
}
-/* Append to decl_buf a printable name for NODE. */
+/* Append to decl_buf a printable name for NODE.
+ Depending on VERBOSITY, more information about NODE
+ is printed. Read the comments of decl_printable_name in
+ langhooks.h for more. */
static void
-put_decl_node (tree node)
+put_decl_node (tree node, int verbosity)
{
int was_pointer = 0;
if (TREE_CODE (node) == POINTER_TYPE)
@@ -370,17 +373,32 @@ put_decl_node (tree node)
{
if (TREE_CODE (node) == FUNCTION_DECL)
{
+ if (verbosity == 0 && DECL_NAME (node))
+ /* We have been instructed to just print the bare name
+ of the function. */
+ {
+ put_decl_node (DECL_NAME (node), 0);
+ return;
+ }
+
/* We want to print the type the DECL belongs to. We don't do
that when we handle constructors. */
if (! DECL_CONSTRUCTOR_P (node)
- && ! DECL_ARTIFICIAL (node) && DECL_CONTEXT (node))
+ && ! DECL_ARTIFICIAL (node) && DECL_CONTEXT (node)
+ /* We want to print qualified DECL names only
+ if verbosity is higher than 1. */
+ && verbosity >= 1)
{
- put_decl_node (TYPE_NAME (DECL_CONTEXT (node)));
+ put_decl_node (TYPE_NAME (DECL_CONTEXT (node)),
+ verbosity);
put_decl_string (".", 1);
}
if (! DECL_CONSTRUCTOR_P (node))
- put_decl_node (DECL_NAME (node));
- if (TREE_TYPE (node) != NULL_TREE)
+ put_decl_node (DECL_NAME (node), verbosity);
+ if (TREE_TYPE (node) != NULL_TREE
+ /* We want to print function parameters only if verbosity
+ is higher than 2. */
+ && verbosity >= 2)
{
int i = 0;
tree args = TYPE_ARG_TYPES (TREE_TYPE (node));
@@ -391,19 +409,22 @@ put_decl_node (tree node)
{
if (i > 0)
put_decl_string (",", 1);
- put_decl_node (TREE_VALUE (args));
+ put_decl_node (TREE_VALUE (args), verbosity);
}
put_decl_string (")", 1);
}
}
else
- put_decl_node (DECL_NAME (node));
+ put_decl_node (DECL_NAME (node), verbosity);
}
else if (TYPE_P (node) && TYPE_NAME (node) != NULL_TREE)
{
- if (TREE_CODE (node) == RECORD_TYPE && TYPE_ARRAY_P (node))
+ if (TREE_CODE (node) == RECORD_TYPE && TYPE_ARRAY_P (node)
+ /* Print detailed array information only if verbosity is higher
+ than 2. */
+ && verbosity >= 2)
{
- put_decl_node (TYPE_ARRAY_ELEMENT (node));
+ put_decl_node (TYPE_ARRAY_ELEMENT (node), verbosity);
put_decl_string("[]", 2);
}
else if (node == promoted_byte_type_node)
@@ -417,7 +438,7 @@ put_decl_node (tree node)
else if (node == void_type_node && was_pointer)
put_decl_string ("null", 4);
else
- put_decl_node (TYPE_NAME (node));
+ put_decl_node (TYPE_NAME (node), verbosity);
}
else if (TREE_CODE (node) == IDENTIFIER_NODE)
put_decl_string (IDENTIFIER_POINTER (node), IDENTIFIER_LENGTH (node));
@@ -434,10 +455,7 @@ const char *
lang_printable_name (tree decl, int v)
{
decl_bufpos = 0;
- if (v == 0 && TREE_CODE (decl) == FUNCTION_DECL)
- put_decl_node (DECL_NAME (decl));
- else
- put_decl_node (decl);
+ put_decl_node (decl, v);
put_decl_string ("", 1);
return decl_buf;
}
diff --git a/gcc/longlong.h b/gcc/longlong.h
index 57308bd9b79..11e70139957 100644
--- a/gcc/longlong.h
+++ b/gcc/longlong.h
@@ -982,7 +982,7 @@ UDItype __umulsidi3 (USItype, USItype);
" or r1,%0" \
: "=r" (q), "=&z" (r) \
: "1" (n1), "r" (n0), "rm" (d), "r" (&__udiv_qrnnd_16) \
- : "r1", "r2", "r4", "r5", "r6", "pr"); \
+ : "r1", "r2", "r4", "r5", "r6", "pr", "t"); \
} while (0)
#define UDIV_TIME 80
@@ -990,7 +990,7 @@ UDItype __umulsidi3 (USItype, USItype);
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
__asm__ ("clrt;subc %5,%1; subc %4,%0" \
: "=r" (sh), "=r" (sl) \
- : "0" (ah), "1" (al), "r" (bh), "r" (bl))
+ : "0" (ah), "1" (al), "r" (bh), "r" (bl) : "t")
#endif /* __sh__ */
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 16513481855..0f01fc9d158 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -2109,6 +2109,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 2268d7d13b4..d7c8292ad73 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,198 @@
+2009-08-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gfortran.dg/pr41011.f: Removed.
+
+2009-08-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/40971
+ * gcc.dg/pr40971.c: New test.
+
+2009-08-17 Dodji Seketeli <dodji@redhat.com>
+
+ * gcc.dg/debug/dwarf2/inline2.c: Add -dA to compile options.
+
+2009-08-16 H.J. Lu <hongjiu.lu@intel.com>
+
+ Backport from mainline:
+ 2009-08-14 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/41070
+ * gfortran.dg/structure_constructor_10.f90: New.
+
+ 2009-08-14 Paolo Bonzini <bonzini@gnu.org>
+
+ PR target/40934
+ * gcc.target/i386/pr40934.c: New.
+
+ 2009-08-13 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/40995
+ * gfortran.dg/intrinsic_4.f90: New.
+
+ 2009-08-13 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/41047
+ * gcc.dg/tree-ssa/ssa-ccp-27.c: New testcase.
+
+ 2009-08-12 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/41011
+ * gfortran.dg/pr41011.f: New testcase.
+
+ 2009-08-10 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/41006
+ * gcc.c-torture/compile/pr41006-1.c: New testcase.
+ * gcc.c-torture/compile/pr41006-2.c: Likewise.
+
+ 2009-08-10 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/40866
+ * g++.dg/expr/stmt-expr-1.C: New test.
+
+ 2009-08-09 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/41008
+ * gcc.dg/vect/O1-pr41008.c: New test.
+
+ 2009-08-08 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/40991
+ * g++.dg/torture/pr40991.C: New testcase.
+
+ 2009-08-06 Uros Bizjak <ubizjak@gmail.com>
+ H.J. Lu <hongjiu.lu@intel.com>
+
+ PR target/40957
+ * gcc.target/i386/pr40957.c: New test.
+
+ 2009-08-06 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/40964
+ * gcc.c-torture/compile/pr40964.c: New testcase.
+
+2009-08-16 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/40847
+ * gfortran.dg/transfer_resolve_1.f90 : New test.
+
+2009-08-16 Uros Bizjak <ubizjak@gmail.com>
+
+ Backport from mainline:
+ 2009-08-14 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/41019
+ * gcc.target/i386/pr41019.c: New test.
+
+2009-08-16 Dodji Seketeli <dodji@redhat.com>
+
+ PR debug/37801
+ * gcc/testsuite/gcc.dg/debug/20020224-1.c: Adjust the comment.
+ Make sure to trigger inlining optimizations.
+ * gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c: New test.
+
+2009-08-12 Richard Guenther <rguenther@suse.de>
+
+ PR rtl-optimization/41033
+ * gcc.dg/pr41033.c: New test.
+
+2009-08-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ Backport:
+ 2009-04-30 Adam Nemet <anemet@caviumnetworks.com>
+
+ * gcc.dg/ssp-1.c (__stack_chk_fail): Remove static.
+
+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
+ * gcc.dg/dfp/pr39902.c: Fix typos in constant suffixes.
+
2009-07-29 Tobias Burnus <burnus@net-b.de>
PR fortran/40851
@@ -300,7 +495,7 @@
PR target/40587
* gfortran.dg/pr40587.f: New test.
-
+
2009-07-03 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/40638
@@ -687,7 +882,7 @@
2009-05-14 Ben Elliston <bje@au.ibm.com>
Backport from mainline:
- 2009-05-14 Ben Elliston <bje@au.ibm.com>
+ 2009-05-14 Ben Elliston <bje@au.ibm.com>
PR middle-end/40035
* gcc.c-torture/compile/pr40035.c: New test.
@@ -1163,7 +1358,7 @@
PR objc/27377
* objc.dg/conditional-1.m: New tests.
-
+
2009-04-08 Dodji Seketeli <dodji@redhat.com>
PR c++/39637
@@ -1189,7 +1384,7 @@
2009-04-06 Laurent GUERBY <laurent@guerby.net>
* lib/gnat.exp: Handle multilib.
-
+
2009-04-06 Jason Merrill <jason@redhat.com>
PR c++/35146
@@ -1447,7 +1642,7 @@
2009-03-23 Jason Merrill <jason@redhat.com>
* g++.dg/cpp0x/auto12.C: Add variadic test.
-
+
PR c++/39526
* g++.dg/warn/Wshadow-4.C: New test.
@@ -1782,8 +1977,8 @@
* gcc.dg/vect/vect-complex-1.c: Add attribute aligned to the arrays.
* gcc.dg/vect/vect-iv-6.c: Don't expect to fail to vectorize
on targets without vector misalignment support.
- * lib/target-supports.exp
- (check_effective_target_vect_short_mult): Add
+ * lib/target-supports.exp
+ (check_effective_target_vect_short_mult): Add
check_effective_target_arm32.
2009-03-02 Sebastian Pop <sebastian.pop@amd.com>
@@ -2129,7 +2324,7 @@
2009-02-15 Uros Bizjak <ubizjak@gmail.com>
* gcc.dg/struct/w_prof_single_str_global.c: Mask return value.
-
+
2009-02-13 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* gcc.target/spu/intrinsics-sr.c: New test.
@@ -2469,7 +2664,7 @@
PR middle-end/35854
* gcc.dg/lower-subreg-1.c: Renamed dump pass from "subreg"
to "subreg1".
-
+
2009-01-29 Steve Ellcey <sje@cup.hp.com>
PR middle-end/38857
@@ -2943,7 +3138,7 @@
* g++.dg/eh/check-vect.h (sig_ill_handler): Remove AltiVec runtime
check.
* g++.dg/ext/altivec_check.h: Delete.
-
+
2009-01-13 Nathan Froyd <froydnj@codesourcery.com>
* gcc.target/powerpc/altivec-macros.c: Require a powerpc_altivec_ok
@@ -3339,7 +3534,7 @@
dg-timeout-factor.
* gcc.dg/20020425-1.c: Likewise.
* gcc.dg/pch/pch.exp: Likewise.
-
+
2009-01-05 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38657
@@ -3354,7 +3549,7 @@
PR fortran/38669
PR fortran/38726
- * gfortran.dg/elemental_subroutine_7.f90:
+ * gfortran.dg/elemental_subroutine_7.f90:
Fix p values so that it can be used as vector subscript.
2009-01-05 Jason Merrill <jason@redhat.com>
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/expr/stmt-expr-1.C b/gcc/testsuite/g++.dg/expr/stmt-expr-1.C
new file mode 100644
index 00000000000..2c50e35dca8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/expr/stmt-expr-1.C
@@ -0,0 +1,36 @@
+// Contributed by Dodji Seketeli <dodji@redhat.com>
+// Origin PR c++/40866
+// { dg-options "-std=gnu++98" }
+// { dg-do "compile" }
+
+template <typename T> class QForeachContainer {
+public:
+ QForeachContainer();
+ int brk;
+ typename T::const_iterator i;
+};
+
+template <typename T> class QList {
+public:
+ class const_iterator {
+ public:
+ const_iterator(const const_iterator &o);
+ const_iterator &operator++();
+ };
+};
+
+class QAction;
+class QWidget {
+public:
+ QList<QAction*> actions() const;
+};
+class myDialog : public QWidget {
+ myDialog();
+};
+
+myDialog::myDialog()
+{
+ QForeachContainer<__typeof__(actions())> _container_;
+ ({++_container_.brk; ++_container_.i;});
+}
+
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/g++.dg/torture/pr40991.C b/gcc/testsuite/g++.dg/torture/pr40991.C
new file mode 100644
index 00000000000..c08124024a7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr40991.C
@@ -0,0 +1,113 @@
+/* { dg-options "-std=gnu++0x" } */
+
+typedef __SIZE_TYPE__ size_t;
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ using ::size_t;
+ void __throw_bad_function_call() __attribute__((__noreturn__));
+}
+inline void* operator new(std::size_t, void* __p) throw() {
+ return __p;
+}
+namespace std {
+ class type_info {
+ public:
+ bool operator==(const type_info& __arg) const { }
+ };
+ namespace tr1 {
+ template<typename _Tp, _Tp __v> struct integral_constant { };
+ typedef integral_constant<bool, true> true_type;
+ template<typename _Res, typename... _ArgTypes>
+ struct _Maybe_unary_or_binary_function { };
+ class _Undefined_class;
+ union _Nocopy_types {
+ void (_Undefined_class::*_M_member_pointer)();
+ };
+ union _Any_data {
+ void* _M_access() {
+ return &_M_pod_data[0];
+ }
+ char _M_pod_data[sizeof(_Nocopy_types)];
+ };
+ enum _Manager_operation { __get_type_info, __get_functor_ptr, __clone_functor, __destroy_functor };
+ template<typename _Tp> struct _Simple_type_wrapper {
+ _Simple_type_wrapper(_Tp __value) : __value(__value) { }
+ _Tp __value;
+ };
+ template<typename _Signature> class function;
+ class _Function_base {
+ public:
+ static const std::size_t _M_max_size = sizeof(_Nocopy_types);
+ static const std::size_t _M_max_align = __alignof__(_Nocopy_types);
+ template<typename _Functor> class _Base_manager {
+ static const bool __stored_locally = (sizeof(_Functor) <= _M_max_size && __alignof__(_Functor) <= _M_max_align && (_M_max_align % __alignof__(_Functor) == 0));
+ typedef integral_constant<bool, __stored_locally> _Local_storage;
+ public:
+ static bool _M_manager(_Any_data& __dest, const _Any_data& __source, _Manager_operation __op) { }
+ static void _M_init_functor(_Any_data& __functor, const _Functor& __f) {
+ _M_init_functor(__functor, __f, _Local_storage());
+ }
+ template<typename _Class, typename _Tp> static bool _M_not_empty_function(_Tp _Class::* const& __mp) {
+ return __mp;
+ }
+ static void _M_init_functor(_Any_data& __functor, const _Functor& __f, true_type) {
+ new (__functor._M_access()) _Functor(__f);
+ }
+ };
+ ~_Function_base() {
+ if (_M_manager) _M_manager(_M_functor, _M_functor, __destroy_functor);
+ }
+ bool _M_empty() const {
+ return !_M_manager;
+ }
+ typedef bool (*_Manager_type)(_Any_data&, const _Any_data&, _Manager_operation);
+ _Any_data _M_functor;
+ _Manager_type _M_manager;
+ };
+ template<typename _Signature, typename _Functor> class _Function_handler;
+ template<typename _Class, typename _Member, typename _Res, typename... _ArgTypes> class _Function_handler<_Res(_ArgTypes...), _Member _Class::*> : public _Function_handler<void(_ArgTypes...), _Member _Class::*> {
+ public:
+ static _Res _M_invoke(const _Any_data& __functor, _ArgTypes... __args) { }
+ };
+ template<typename _Class, typename _Member, typename... _ArgTypes> class _Function_handler<void(_ArgTypes...), _Member _Class::*> : public _Function_base::_Base_manager< _Simple_type_wrapper< _Member _Class::* > > { };
+ template<typename _Res, typename... _ArgTypes> class function<_Res(_ArgTypes...)> : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>, private _Function_base {
+ typedef _Res _Signature_type(_ArgTypes...);
+ struct _Useless { };
+ public:
+ template<typename _Functor> function(_Functor __f, _Useless = _Useless());
+ _Res operator()(_ArgTypes... __args) const;
+ const type_info& target_type() const;
+ typedef _Res (*_Invoker_type)(const _Any_data&, _ArgTypes...);
+ _Invoker_type _M_invoker;
+ };
+ template<typename _Res, typename... _ArgTypes> template<typename _Functor> function<_Res(_ArgTypes...)>:: function(_Functor __f, _Useless) : _Function_base() {
+ typedef _Function_handler<_Signature_type, _Functor> _My_handler;
+ if (_My_handler::_M_not_empty_function(__f)) {
+ _M_invoker = &_My_handler::_M_invoke;
+ _M_manager = &_My_handler::_M_manager;
+ _My_handler::_M_init_functor(_M_functor, __f);
+ }
+ }
+ template<typename _Res, typename... _ArgTypes> _Res function<_Res(_ArgTypes...)>:: operator()(_ArgTypes... __args) const {
+ if (_M_empty()) {
+ __throw_bad_function_call();
+ }
+ return _M_invoker(_M_functor, __args...);
+ }
+ template<typename _Res, typename... _ArgTypes> const type_info& function<_Res(_ArgTypes...)>:: target_type() const {
+ if (_M_manager) {
+ _Any_data __typeinfo_result;
+ _M_manager(__typeinfo_result, _M_functor, __get_type_info);
+ }
+ }
+ }
+}
+struct X {
+ int bar;
+};
+void test05() {
+ using std::tr1::function;
+ X x;
+ function<int(X&)> frm(&X::bar);
+ frm(x) == 17;
+ typeid(int X::*) == frm.target_type();
+}
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/pr40964.c b/gcc/testsuite/gcc.c-torture/compile/pr40964.c
new file mode 100644
index 00000000000..51639940ea8
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr40964.c
@@ -0,0 +1,10 @@
+struct alloc2 {
+ int bla;
+ char * __restrict data;
+ char * __restrict data2;
+};
+struct alloc2 b;
+void * f (void)
+{
+ return b.data;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41006-1.c b/gcc/testsuite/gcc.c-torture/compile/pr41006-1.c
new file mode 100644
index 00000000000..8aef66dbdfe
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr41006-1.c
@@ -0,0 +1,17 @@
+typedef int (*FARPROC)();
+
+typedef int (*LPFN_ACCEPTEX)(void*);
+static LPFN_ACCEPTEX acceptex_fn;
+
+int xWSAIoctl(void*);
+static void get_fn(FARPROC* fn)
+{
+ FARPROC func;
+ if (!xWSAIoctl( &func))
+ *fn = func;
+}
+
+void get_fn_pointers()
+{
+ get_fn((FARPROC*)&acceptex_fn);
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr41006-2.c b/gcc/testsuite/gcc.c-torture/compile/pr41006-2.c
new file mode 100644
index 00000000000..766778d410f
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr41006-2.c
@@ -0,0 +1,15 @@
+typedef int *FARPROC;
+static int * __restrict__ acceptex_fn;
+
+int xWSAIoctl(void*);
+static void get_fn(FARPROC* fn)
+{
+ FARPROC func;
+ if (!xWSAIoctl( &func))
+ *fn = func;
+}
+
+void get_fn_pointers()
+{
+ get_fn((FARPROC*)&acceptex_fn);
+}
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/debug/20020224-1.c b/gcc/testsuite/gcc.dg/debug/20020224-1.c
index c61a17aed10..968b5655b39 100644
--- a/gcc/testsuite/gcc.dg/debug/20020224-1.c
+++ b/gcc/testsuite/gcc.dg/debug/20020224-1.c
@@ -1,9 +1,13 @@
+/* { dg-options "-g3 -O" } */
/* { dg-do compile } */
-/* Here's the deal: f3 is not inlined because it's too big, but f2 and
- f1 are inlined into it. We used to fail to emit debugging info for
- t1, because it was moved inside the (inlined) block of f1, marked
- as abstract, then we'd crash. */
+/* Here's the deal: f4 is inlined into main, f3 is inlined into f4, f2 is
+ inlined into f1. The DIE of main should contain DW_TAG_inlined_subroutines
+ children for f4, f3, f2 and f1. Also, there should be a DIE representing
+ and out of line instance of f4, aside the DIE representing its abstract
+ instance.
+ We used to fail to emit debugging info for t1, because it was moved
+ inside the (inlined) block of f1, marked as abstract, then we'd crash. */
#define UNUSED __attribute__((unused))
#define EXT __extension__
@@ -58,3 +62,10 @@ f4 (void)
return;
}
+
+int
+main ()
+{
+ int foo = 1;
+ f4 ();
+}
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c b/gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c
new file mode 100644
index 00000000000..3a6318ea586
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/inline2.c
@@ -0,0 +1,70 @@
+/* Contributed by Dodji Seketeli <dodji@redhat.com>
+ Origin: PR debug/37801
+
+ Abstract instances (DW_TAG_subroutines having the DW_AT_inline attribute)
+ of second and first were having a DW_TAG_lexical_block DIE wrongly
+ representing the inlined calls to third (in second) and to
+ second (in first). At the same time, main didn't have children
+ DW_TAG_inlined_subroutine DIEs representing the inlined calls to
+ first, second and third.
+
+ The ideal goal here is to test that we have no superfluous
+ DW_TAG_lexical_block DIE anymore, that abstract instances DIEs have
+ no descendant DIE with a DW_AT_abstract_origin attribute, and that main has
+ properly nested DW_TAG_inlined_subroutine DIEs for third, second and first.
+*/
+
+/* { dg-options "-O -g3 -dA" } */
+/* { dg-do compile } */
+
+/* There are 6 inlined subroutines:
+ - One for each subroutine inlined into main, that's 3.
+ - One for earch subroutine inline into the out of line instances
+ of third, second and first. */
+/* { dg-final { scan-assembler-times "\\(DIE \\(.*?\\) DW_TAG_inlined_subroutine" 6 } } */
+
+/* Likewise we should have 6 DW_TAG_lexical_block DIEs:
+ - One for each subroutine inlined into main, so that's 3.
+ - One for each subroutine inlined in the out of line instances
+ of third, second and first, that's 3.
+*/
+/* { dg-final { scan-assembler-times "\\(DIE \\(.*?\\) DW_TAG_lexical_block" 6 } } */
+
+
+/* There are 3 DW_AT_inline attributes: one per abstract inline instance.
+ The value of the attribute must be 0x3, meaning the function was
+ actually inlined. */
+/* { dg-final { scan-assembler-times "byte.*?0x3.*? DW_AT_inline" 3 } } */
+
+
+inline void
+third (int arg3)
+{
+ int var3 = arg3;
+ int* a = 0;
+ a[0] = var3;
+}
+
+inline void
+second (int arg2)
+{
+ int var2 = arg2;
+ third (var2+1);
+}
+
+inline void
+first (int arg1)
+{
+ int var1 = arg1;
+ second (var1+1);
+}
+
+int
+main ()
+{
+ int some_int = 1;
+ first (some_int);
+ return 0;
+}
+
+
diff --git a/gcc/testsuite/gcc.dg/dfp/pr39902.c b/gcc/testsuite/gcc.dg/dfp/pr39902.c
index 8c4e7b24380..120610c3779 100644
--- a/gcc/testsuite/gcc.dg/dfp/pr39902.c
+++ b/gcc/testsuite/gcc.dg/dfp/pr39902.c
@@ -189,7 +189,7 @@ doit128 (void)
if (COMPARE128 (a128, p128_2_0))
FAILURE
- a128.d = p128_2_0.d * 1.0DD;
+ a128.d = p128_2_0.d * 1.0DL;
if (COMPARE128 (a128, p128_2_0))
FAILURE
@@ -197,7 +197,7 @@ doit128 (void)
if (COMPARE128 (a128, m128_2_0))
FAILURE
- a128.d = p128_2_0.d * -1.0DD;
+ a128.d = p128_2_0.d * -1.0DL;
if (COMPARE128 (a128, m128_2_0))
FAILURE
@@ -208,7 +208,7 @@ doit128 (void)
if (! (COMPARE128 (a128, p128_2_0)))
FAILURE
- a128.d = p128_2_0.d * 1.DD;
+ a128.d = p128_2_0.d * 1.DL;
if (! (COMPARE128 (a128, p128_2_0)))
FAILURE
@@ -216,7 +216,7 @@ doit128 (void)
if (! (COMPARE128 (a128, m128_2_0)))
FAILURE
- a128.d = p128_2_0.d * -1.DD;
+ a128.d = p128_2_0.d * -1.DL;
if (! (COMPARE128 (a128, m128_2_0)))
FAILURE
}
diff --git a/gcc/testsuite/gcc.dg/pr40971.c b/gcc/testsuite/gcc.dg/pr40971.c
new file mode 100644
index 00000000000..31dfd5e1398
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr40971.c
@@ -0,0 +1,23 @@
+/* PR target/40971 */
+/* { dg-do compile } */
+/* { dg-options "-O -fstack-protector -fno-strict-aliasing" } */
+/* { dg-require-effective-target fstack_protector } */
+
+extern void bar (char *);
+
+void
+foo (int f, long a)
+{
+ {
+ char d[32768];
+ bar (d);
+ }
+ double b = f;
+ while (a)
+ {
+ char c[sizeof (double)];
+ __builtin_memcpy (c, &b, sizeof (c));
+ if (*(double *) c != 2.0)
+ break;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/pr41033.c b/gcc/testsuite/gcc.dg/pr41033.c
new file mode 100644
index 00000000000..5043be2d119
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr41033.c
@@ -0,0 +1,24 @@
+/* { dg-options "-O1 -fno-strict-aliasing" } */
+/* PR rtl-optimization/41033 */
+
+struct X {
+ int i;
+ int j;
+};
+
+int foo(struct X *p, struct X *q)
+{
+ p->j = 1;
+ q->i = 0;
+ return p->j;
+}
+
+extern void abort (void);
+
+int main()
+{
+ struct X x;
+ if (foo (&x, (struct X *)&x.j) != 0)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/ssp-1.c b/gcc/testsuite/gcc.dg/ssp-1.c
index e71522bbfd3..5467f4dc36c 100644
--- a/gcc/testsuite/gcc.dg/ssp-1.c
+++ b/gcc/testsuite/gcc.dg/ssp-1.c
@@ -4,7 +4,7 @@
#include <stdlib.h>
-static void
+void
__stack_chk_fail (void)
{
exit (0); /* pass */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-27.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-27.c
new file mode 100644
index 00000000000..c2796345471
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-27.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-ccp1" } */
+
+#include <string.h>
+
+char c[10];
+
+void
+f1 ()
+{
+ const char *p = "123456";
+ memcpy (c, p, 6);
+}
+
+void
+f2 ()
+{
+ const char *p = "12345678";
+ p += 2;
+ memcpy (c, p, 6);
+}
+
+/* { dg-final { scan-tree-dump-times "memcpy\[^\n\]*123456" 2 "ccp1" } } */
+/* { dg-final { cleanup-tree-dump "ccp1" } } */
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.dg/vect/O1-pr41008.c b/gcc/testsuite/gcc.dg/vect/O1-pr41008.c
new file mode 100644
index 00000000000..bbdea127ce8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/O1-pr41008.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+
+double heating[2][2];
+
+void foo (int, int);
+
+void map_do()
+{
+ int jsav, ksav, k, j;
+
+ for(k = 0; k < 2; k++)
+ for(j = 0; j < 2; j++)
+ if (heating[k][j] > 0.)
+ {
+ jsav = j;
+ ksav = k;
+ }
+
+ foo (jsav, ksav);
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
+
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/i386/pr40934.c b/gcc/testsuite/gcc.target/i386/pr40934.c
new file mode 100644
index 00000000000..41f46f88114
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr40934.c
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-O2 -march=i586 -ffast-math" } */
+
+extern double host_frametime;
+extern float pitchvel;
+V_DriftPitch (float delta, float move)
+{
+ if (!delta)
+ move = host_frametime;
+ if (delta > 0)
+ ;
+ else if (delta < 0 && move > -delta)
+ pitchvel = 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr40957.c b/gcc/testsuite/gcc.target/i386/pr40957.c
new file mode 100644
index 00000000000..56762d7e810
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr40957.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target avx } */
+/* { dg-options "-O2 -mavx" } */
+
+typedef int __v8si __attribute__((__vector_size__(32)));
+typedef long long __m256i __attribute__((__vector_size__(32), __may_alias__));
+
+static __m256i
+_mm256_set1_epi32 (int __A)
+{
+ return __extension__ (__m256i)(__v8si){ __A, __A, __A, __A,
+ __A, __A, __A, __A };
+}
+__m256i
+foo ()
+{
+ return _mm256_set1_epi32 (-1);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr41019.c b/gcc/testsuite/gcc.target/i386/pr41019.c
new file mode 100644
index 00000000000..c0021c6a450
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr41019.c
@@ -0,0 +1,19 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -msse2 -ftree-vectorize" } */
+
+#include "sse2-check.h"
+
+long long int a[64];
+
+void
+sse2_test (void)
+{
+ int k;
+
+ for (k = 0; k < 64; k++)
+ a[k] = a[k] != 5 ? 12 : 10;
+
+ for (k = 0; k < 64; k++)
+ if (a[k] != 12)
+ abort ();
+}
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/intrinsic_4.f90 b/gcc/testsuite/gfortran.dg/intrinsic_4.f90
new file mode 100644
index 00000000000..300dfde1fde
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/intrinsic_4.f90
@@ -0,0 +1,12 @@
+! { dg-do compile }
+! { dg-options "-Wsurprising" }
+!
+! PR 40995: [4.5 Regression] Spurious "Type specified for intrinsic function...ignored" message
+!
+! Contributed by Mat Cross <mathewc@nag.co.uk>
+
+subroutine sub(n,x)
+ intrinsic abs
+ integer n, x(abs(n))
+end
+
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/testsuite/gfortran.dg/structure_constructor_10.f90 b/gcc/testsuite/gfortran.dg/structure_constructor_10.f90
new file mode 100644
index 00000000000..eed7fa3a9d2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/structure_constructor_10.f90
@@ -0,0 +1,28 @@
+! { dg-do compile }
+!
+! PR 41070: [4.5 Regression] Error: Components of structure constructor '' at (1) are PRIVATE
+!
+! Contributed by Michael Richmond <michael.a.richmond@nasa.gov>
+
+MODULE cdf_aux_mod
+IMPLICIT NONE
+
+TYPE :: one_parameter
+ CHARACTER (8) :: name
+END TYPE one_parameter
+
+TYPE :: the_distribution
+ CHARACTER (8) :: name
+END TYPE the_distribution
+
+TYPE (the_distribution), PARAMETER :: the_beta = the_distribution('cdf_beta')
+END MODULE cdf_aux_mod
+
+SUBROUTINE cdf_beta()
+ USE cdf_aux_mod
+ IMPLICIT NONE
+ CALL check_complements(the_beta%name)
+END SUBROUTINE cdf_beta
+
+! { dg-final { cleanup-modules "cdf_aux_mod" } }
+
diff --git a/gcc/testsuite/gfortran.dg/transfer_resolve_1.f90 b/gcc/testsuite/gfortran.dg/transfer_resolve_1.f90
new file mode 100644
index 00000000000..8d326a186a4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/transfer_resolve_1.f90
@@ -0,0 +1,21 @@
+! { dg-do run }
+! PR40847 - an error in gfc_resolve_transfer caused the character length
+! of 'mold' to be set incorrectly.
+!
+! Contributed by Joost VandeVondele <jv244@cam.ac.uk>
+!
+program test_elemental
+
+if (any (transfer_size((/0.,0./),(/'a','b'/)) .ne. [4 ,4])) call abort
+
+contains
+
+ elemental function transfer_size (source, mold)
+ real, intent(in) :: source
+ character(*), intent(in) :: mold
+ integer :: transfer_size
+ transfer_size = SIZE(TRANSFER(source, (/mold/)))
+ return
+ end function transfer_size
+
+end program test_elemental
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 02cb992ba67..ff0c8087c54 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -1682,7 +1682,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/libdecnumber/ChangeLog b/libdecnumber/ChangeLog
index c7a3f6b3be9..c8c57a7afa9 100644
--- a/libdecnumber/ChangeLog
+++ b/libdecnumber/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-13 Janis Johnson <janis187@us.ibm.com>
+
+ PR c/41046
+ * decCommon.c ( decFloatShow): Define function only for DECCHECK
+ or DECTRACE.
+
2009-07-22 Release Manager
* GCC 4.4.1 released.
diff --git a/libdecnumber/decCommon.c b/libdecnumber/decCommon.c
index c0dcc73f605..5c47c2e4acf 100644
--- a/libdecnumber/decCommon.c
+++ b/libdecnumber/decCommon.c
@@ -1089,6 +1089,7 @@ uInt decFloatRadix(const decFloat *df) {
return 10;
} /* decFloatRadix */
+#if (DECCHECK || DECTRACE)
/* ------------------------------------------------------------------ */
/* decFloatShow -- printf a decFloat in hexadecimal and decimal */
/* df is the decFloat to show */
@@ -1115,6 +1116,7 @@ void decFloatShow(const decFloat *df, const char *tag) {
printf(">%s> %s [big-endian] %s\n", tag, hexbuf, buff);
return;
} /* decFloatShow */
+#endif
/* ------------------------------------------------------------------ */
/* decFloatToBCD -- get sign, exponent, and BCD8 from a decFloat */
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. */