diff options
author | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-08-18 22:36:48 +0000 |
---|---|---|
committer | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-08-18 22:36:48 +0000 |
commit | 768000c7c477576eeaa94b3669c4b6c3fadc8e98 (patch) | |
tree | 4c1254603908811413e71c2dd0a41cc0206d29a9 | |
parent | aa24f2bb45f8656877cf4e44704735c3c0e16c73 (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
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)')" ¶ms" + 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. */ |