Tom de Vries [Wed, 20 Jun 2012 00:57:23 +0000 (00:57 +0000)]
2012-06-19 Tom de Vries <vries@codesourcery.com>
Maxim Kuvyrkov <maxim@codesourcery.com>
* config/mips/mips.c (mips_emit_pre_atomic_barrier_p,)
(mips_emit_post_atomic_barrier_p): New static functions.
(mips_process_sync_loop): Use them. Emit sync memory barriers in
accordance with memory model semantics. Add return of CMP result for
compare_and_swap.
* config/mips/mips.md: Update comment.
(sync_cmp): New attribute.
(sync_memmodel): New attribute replacing sync_release_barrier.
* config/mips/sync.md (UNSPEC_ATOMIC_COMPARE_AND_SWAP,)
(UNSPEC_ATOMIC_EXCHANGE, UNSPEC_ATOMIC_FETCH_OP): New constants.
(sync_lock_test_and_set, test_and_set_12): Update.
(atomic_compare_and_swap, atomic_exchange, atomic_exchange_llsc,)
(atomic_fetch_add, atomic_fetch_add_llsc): New patterns.
Co-Authored-By: Maxim Kuvyrkov <maxim@codesourcery.com>
From-SVN: r188803
GCC Administrator [Wed, 20 Jun 2012 00:18:50 +0000 (00:18 +0000)]
Daily bump.
From-SVN: r188802
Kaz Kojima [Tue, 19 Jun 2012 22:29:24 +0000 (22:29 +0000)]
stack-usage-1.c: Use sh*-*-* instead of sh-*-*.
* gcc.dg/stack-usage-1.c: Use sh*-*-* instead of sh-*-*.
From-SVN: r188796
Joseph Myers [Tue, 19 Jun 2012 22:08:49 +0000 (23:08 +0100)]
spe.md (*mov_si<mode>_e500_subreg0): Rename to mov_si<mode>_e500_subreg0.
* config/rs6000/spe.md (*mov_si<mode>_e500_subreg0): Rename to
mov_si<mode>_e500_subreg0.
(*mov_si<mode>_e500_subreg0_elf_low)
(*mov_si<mode>_e500_subreg4_elf_low): New patterns.
testsuite:
* gcc.c-torture/compile/vector-5.c,
gcc.c-torture/compile/vector-6.c: New tests.
From-SVN: r188795
Richard Henderson [Tue, 19 Jun 2012 21:08:03 +0000 (14:08 -0700)]
Set cache parameters for alpha
From-SVN: r188794
Steven Bosscher [Tue, 19 Jun 2012 20:44:47 +0000 (20:44 +0000)]
tm.texi.in (TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE, [...]): Add @hooks.
gcc/
* doc/tm.texi.in (TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE,
TARGET_OBJC_DECLARE_CLASS_DEFINITION): Add @hooks.
(ASM_DECLARE_CLASS_REFERENCE, ASM_DECLARE_UNRESOLVED_REFERENCE):
Remove.
* doc/tm.texi: Regenerate.
* config/darwin.h (ASM_OUTPUT_LABELREF): Remove special case for
.objc_class_name_*.
* config/darwin-c.c: Include target.h.
(darwin_objc_declare_unresolved_class_reference): New function.
(darwin_objc_declare_class_definition): New function.
(TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE): Define.
(TARGET_OBJC_DECLARE_CLASS_DEFINITION): Define.
c-family/
* c-target.def (objc_declare_unresolved_class_reference,
objc_declare_class_definition): Add new hooks.
objc/
* objc-next-runtime-abi-01.c: Do not include tm.h and output.h.
Include c-family/c-target.h.
(handle_next_class_ref): Rewrite to emit top-level asm statements.
(handle_next_impent): Likewise.
* objc/Make-lang.in: Fix dependencies for objc-next-runtime-abi-01.o.
From-SVN: r188793
Steven Bosscher [Tue, 19 Jun 2012 20:01:23 +0000 (20:01 +0000)]
check_makefile_deps.sh: Look for c-common.o in c-family/.
* check_makefile_deps.sh: Look for c-common.o in c-family/.
Add a few more crt* files to the list of files to skip.
From-SVN: r188792
Steven Bosscher [Tue, 19 Jun 2012 19:55:33 +0000 (19:55 +0000)]
target.def (output_ident): New hook.
gcc/
* target.def (output_ident): New hook.
* targhooks.h (default_asm_output_ident_directive): Add prototype.
* varasm.c (assemble_asm): Only prefix a tab if the string does not
already start with one.
(default_asm_output_ident_directive): New function to emit
.ident as a top-level asm node while parsing, or directly to
asm_out_file after parsing.
* toplev.c (compile_file): Print a GCC .ident with
targetm.asm_out.output_ident.
* doc/tm.texi.in (ASM_OUTPUT_IDENT): Remove documentation for macro.
(TARGET_ASM_OUTPUT_IDENT): Add @hook for this.
* doc/tm.texi: Update.
* config/elfos.h (ASM_OUTPUT_IDENT, IDENT_ASM_OP): Remove.
(TARGET_ASM_OUTPUT_IDENT): Define.
* config/i386/djgpp.h (IDENT_ASM_OP): Remove.
* config/i386/gas.h (ASM_OUTPUT_IDENT): Remove.
* config/arm/aout.h (ASM_OUTPUT_IDENT): Remove.
* config/sparc/sparc.h (IDENT_ASM_OP): Remove.
(TARGET_ASM_OUTPUT_IDENT): Define.
* config/picochip/picochip.h (IDENT_ASM_OP): Remove.
(TARGET_ASM_OUTPUT_IDENT): Define.
* config/cris/cris-protos.h (cris_asm_output_ident): Add prototype.
* config/cris/cris.c (cris_asm_output_ident): New function.
* config/cris/cris.h (ASM_OUTPUT_IDENT, IDENT_ASM_OP): Remove.
* config/microblaze/microblaze-protos.h (microblaze_asm_output_ident):
Add prototype.
* config/microblaze/microblaze.c: Include cgraph.h for add_asm_node.
(microblaze_asm_output_ident): Rewrite to work similar to
default_asm_output_ident_directive for front-end .idents.
* config/microblaze/microblaze.h (ASM_OUTPUT_IDENT): Remove.
(TARGET_ASM_OUTPUT_IDENT): Define.
* config/mips/mips.h (ASM_OUTPUT_IDENT): Remove.
* config/mips/sde.h (IDENT_ASM_OP, ASM_OUTPUT_IDENT): Remove.
* config/rx/rx.c: Include cgraph.h for add_asm_node.
(rx_asm_output_ident): New function, similar to
default_asm_output_ident_directive, but handle AS100 syntax also, so
that #ident also works for rx in AS100 syntax.
(TARGET_ASM_OUTPUT_IDENT): Define.
* config/rx/rx.h (IDENT_ASM_OP): Remove.
* Makefile.in: Fix dependencies for c-family/c-lex.o.
c-family/
* c-lex.c: Do not include output.h.
(cb_ident): Try to put out .ident with targetm.asm_out.output_ident.
Remove uses of ASM_OUTPUT_IDENT.
ada/
* gcc-interface/trans.c: Include target.h.
(gigi): Try to put out .ident with targetm.asm_out.output_ident.
Remove uses of ASM_OUTPUT_IDENT.
* gcc-interface/Make-lang.in: Fix dependencies.
From-SVN: r188791
Uros Bizjak [Tue, 19 Jun 2012 18:24:26 +0000 (20:24 +0200)]
i386.md (FIST_ROUNDING): New int iterator.
* config/i386/i386.md (FIST_ROUNDING): New int iterator.
(rounding): Handle UNSPEC_FIST_{FLOOR,CEIL}.
(ROUNDING): Ditto.
(*fist<mode>2_<rounding>_1): Macroize insn from
*fist<mode>2_{floor,ceil}_1 using FIST_ROUNDING int iterator.
(fistdi2_<rounding>): Macroize insn from
fistdi2_{floor,ceil} using FIST_ROUNDING int iterator.
(fistdi2_<rounding>_with_temp and splitters): Macroize insn and
corresponding splitters from fistdi2_{floor,ceil} and corresponding
splitters using FIST_ROUNDING int iterator.
(fist<mode>2_<rounding>): Macroize insn from
fist<mode>2_{floor,ceil} using FIST_ROUNDING int iterator.
(fist<mode>2_<rounding>_with_temp and splitters): Macroize insn and
corresponding splitters from fist<mode>2_{floor,ceil} and corresponding
splitters using FIST_ROUNDING int iterator.
(l<rounding>xf<mode>2): Macroize expander from l{floor,ceil}xf<mode>2
using FIST_ROUNDING int iterator.
From-SVN: r188789
Richard Henderson [Tue, 19 Jun 2012 18:19:37 +0000 (11:19 -0700)]
pr33329.c: Change multiplier constant to 12345
From-SVN: r188788
Richard Henderson [Tue, 19 Jun 2012 18:19:26 +0000 (11:19 -0700)]
Handle const_vector in mulv4si3 for pre-sse4.1.
From-SVN: r188787
Richard Henderson [Tue, 19 Jun 2012 18:19:16 +0000 (11:19 -0700)]
Use synth_mult for vector multiplies vs scalar constant
From-SVN: r188786
Richard Henderson [Tue, 19 Jun 2012 18:19:03 +0000 (11:19 -0700)]
Add rtx costs for sse integer ops
From-SVN: r188785
David Edelsohn [Tue, 19 Jun 2012 17:55:14 +0000 (17:55 +0000)]
inclhack.def (aix_mutex_initializer_1): New fix.
* inclhack.def (aix_mutex_initializer_1): New fix.
(aix_cond_initializer_1): New fix.
(aix_rwlock_initializer): New fix.
* fixincl.x: Regenerate.
* tests/base/pthread.h [AIX_MUTEX_INITIALIZER_1_CHECK]: New.
[AIX_COND_INITIALIZER_1_CHECK]: New.
[AIX_RWLOCK_INITIALIZER_1_CHECK]: New.
From-SVN: r188784
Uros Bizjak [Tue, 19 Jun 2012 16:32:57 +0000 (18:32 +0200)]
i386.md (FRNDINT_ROUNDING): New int iterator.
* config/i386/i386.md (FRNDINT_ROUNDING): New int iterator.
(rounding): New int attribute.
(ROUNDING): Ditto.
(frndintxf2_<rounding>): Macroize insn from
frndintxf2_{floor,ceil,trunc} using FRNDINT_ROUNDING int iterator.
(frndintxf2_<rounding>_i387): Macroize insn from
frndintxf2_{floor,ceil,trunc}_i387 using FRNDINT_ROUNDING int iterator.
From-SVN: r188783
Uros Bizjak [Tue, 19 Jun 2012 16:28:50 +0000 (18:28 +0200)]
lex.c (search_line_sse42): Use __builtin_ia32_loaddqu and __builtin_ia32_pcmpestri128 instead of asm.
* lex.c (search_line_sse42): Use __builtin_ia32_loaddqu and
__builtin_ia32_pcmpestri128 instead of asm.
From-SVN: r188782
Richard Guenther [Tue, 19 Jun 2012 15:28:50 +0000 (15:28 +0000)]
vrp68.c: Adjust testcase.
2012-06-19 Richard Guenther <rguenther@suse.de>
* gcc.dg/tree-ssa/vrp68.c: Adjust testcase.
From-SVN: r188781
Richard Guenther [Tue, 19 Jun 2012 14:59:39 +0000 (14:59 +0000)]
tree-vrp.c (union_ranges): New function.
2012-06-19 Richard Guenther <rguenther@suse.de>
* tree-vrp.c (union_ranges): New function.
(vrp_meet_1): Use union_ranges.
(vrp_meet): Dump what we union and call vrp_meet_1.
From-SVN: r188780
Richard Earnshaw [Tue, 19 Jun 2012 13:41:43 +0000 (13:41 +0000)]
arm.md (enum unspec): Delete UNSPEC_SIN and UNSPEC_COS.
* arm.md (enum unspec): Delete UNSPEC_SIN and UNSPEC_COS.
(attr type): Remove fmul, ffmul, farith, ffarith, float_em
f_fpa_load, f_fpa_store, f_mem_r, r_mem_f.
(attr write_conflict, attr core_cycles): Update.
* arm-generic.md (r_mem_f_wbuf): Delete reservation.
From-SVN: r188778
Richard Guenther [Tue, 19 Jun 2012 13:06:35 +0000 (13:06 +0000)]
tree-vrp.c (intersect_ranges): Handle more cases.
2012-06-19 Richard Guenther <rguenther@suse.de>
* tree-vrp.c (intersect_ranges): Handle more cases.
(vrp_intersect_ranges): Dump what we intersect and call ...
(vrp_intersect_ranges_1): ... this.
From-SVN: r188776
Richard Guenther [Tue, 19 Jun 2012 09:19:07 +0000 (09:19 +0000)]
re PR middle-end/53708 (Many failures of the objc tests with -O3 -fnext-runtime and -m32)
2012-06-19 Richard Guenther <rguenther@suse.de>
PR tree-optimization/53708
* tree-vect-data-refs.c (vect_can_force_dr_alignment_p): Preserve
user-supplied alignment and alignment of decls with the used
attribute.
From-SVN: r188771
Lawrence Crowl [Tue, 19 Jun 2012 01:30:31 +0000 (01:30 +0000)]
The intent of the phases was to have a high-level but mutually exclusive accounting of compile time.
The intent of the phases was to have a high-level but mutually exclusive
accounting of compile time. We want to track compile time in a way that
tells us which conceptual phases are taking the most time. That intent
is not currently satisfied. This patch restores that intent.
Add code to verify that the sum of the phase times is less than the total
time, to detect when phases are overlapped. A slight amount of leeway is
required due to time jitters. This verification is done as the last step
in printing timevars so that any timevar information is not lost.
Rename the phases to be clearer about what they measure, so that they
are less likely to be modified to be overlapping. The primary example
is to change TV_PHASE_GENERATE to TV_PHASE_LATE_ASM, meaning late work
on the assembly. This name change avoids confusion n moving the timevar
start call after the call to lang_hooks.decls.final_write_globals, which
prevents overlapping phases.
Each implementation of lang_hooks.decls.final_write_globals, is responsible
for starting and stopping its own phases. Each implementation currently has
a first phase of TV_PHASE_DEFERRED for front-end work deferred until after
parsing is complete. The second phase has been renamed from TV_PHASE_CGRAPH
to TV_PHASE_OPT_GEN, to better reflect its use as the main optimization
and generation phase. This phase accounts for 70%-80% of compilation time
during bootstrap. The third phase is TV_PHASE_DBGINFO, except in cp/decl2.c,
where it is TV_PHASE_CHECK_DBGINFO because cc1plus mixes checking in with
debug info generation. In langhooks.c, write_global_declarations was
using TV_PHASE_CHECK_DBGINFO, but it was doing no checking. So, it now
uses TV_PHASE_DBGINFO.
The changes to LTO are significant. First, initialization now uses
TV_PHASE_SETUP. Reading files now uses TV_PHASE_STREAM_IN. Writing files
now uses TV_PHASE_STREAM_OUT. The remaining phase is TV_PHASE_OPT_GEN
(formerly TV_PHASE_CGRAPH). Finally, because LTO is treated as a front
end, TV_PHASE_PARSING and TV_PARSE_GLOBAL active around it. It is not
parsing, and so those timers should not be active. Rather than make all
front ends manage them, we turn them off as the first thing in LTO and turn
them back on as the last thing.
Tested on x86_64.
Index: gcc/ChangeLog
2012-06-18 Lawrence Crowl <crowl@google.com>
* timevar.def (TV_PHASE_GENERATE): Rename to TV_PHASE_LATE_ASM.
(TV_PHASE_CGRAPH): Rename to TV_PHASE_OPT_GEN.
(TV_PHASE_STREAM_IN): New.
(TV_PHASE_STREAM_OUT): New.
* timevar.c (validate_phases): New.
(timevar_print): Call validate_phases.
* c-decl.c (c_write_global_declarations): Rename use of TV_PHASE_CGRAPH
to TV_PHASE_OPT_GEN.
* langhooks.c (write_global_declarations): Rename use of
TV_PHASE_CGRAPH to TV_PHASE_OPT_GEN. Use TV_PHASE_DBGINFO instead of
TV_PHASE_CHECK_DBGINFO.
* toplev.c (compile_file): Rename use of TV_PHASE_GENERATE to
TV_PHASE_LATE_ASM. Move start of TV_PHASE_LATE_ASM to after call to
lang_hooks.decls.final_write_globals.
Index: gcc/cp/ChangeLog
2012-06-18 Lawrence Crowl <crowl@google.com>
* decl2.c (cp_write_global_declarations): Rename use of TV_PHASE_CGRAPH
to TV_PHASE_OPT_GEN.
Index: gcc/lto/ChangeLog
2012-06-18 Lawrence Crowl <crowl@google.com>
* lto.c (do_whole_program_analysis): Rename use of TV_PHASE_CGRAPH to
TV_PHASE_OPT_GEN. Use new timevar TV_PHASE_STREAM_OUT around the call
to lto_wpa_write_files.
(lto_main): Rename use of TV_PHASE_CGRAPH to TV_PHASE_OPT_GEN. Move
start of TV_PHASE_OPT_GEN to include call to materialize_cgraph. Use
TV_PHASE_SETUP for the call to lto_init. Use new timevar
TV_PHASE_STREAM_IN around the call to read_cgraph_and_symbols.
Turn TV_PHASE_PARSING off then back on again, because LTO is pretending
to be a front end, but is not one.
From-SVN: r188765
GCC Administrator [Tue, 19 Jun 2012 00:20:02 +0000 (00:20 +0000)]
Daily bump.
From-SVN: r188764
Doug Evans [Mon, 18 Jun 2012 23:35:08 +0000 (23:35 +0000)]
* dwarf2.def (DW_OP): Add DW_OP_GNU_const_index.
From-SVN: r188759
Jörg Sonnenberger [Mon, 18 Jun 2012 21:43:58 +0000 (21:43 +0000)]
re PR libstdc++/53678 (namespace pollution on NetBSD)
2012-06-18 Jörg Sonnenberger <joerg@britannica.bec.de>
Jonathan Wakely <jwakely.gcc@gmail.com>
PR libstdc++/53678
* config/os/bsd/netbsd/ctype_base.h: Check for _CTYPE_U.
* testsuite/22_locale/ctype_base/53678.cc: New.
Co-Authored-By: Jonathan Wakely <jwakely.gcc@gmail.com>
From-SVN: r188755
David Edelsohn [Mon, 18 Jun 2012 20:05:48 +0000 (16:05 -0400)]
* config/rs6000/aix52.h (TARGET_EXTRA_BUILTINS): Define as 0.
From-SVN: r188754
Uros Bizjak [Mon, 18 Jun 2012 18:41:25 +0000 (20:41 +0200)]
re PR target/53712 (Does not combine unaligned load with _mm_cmpistri, redundant instruction at -O0)
PR target/53712
* config/i386/sse.md (*sse4_2_pcmpestr_unaligned): New.
(*sse4_2_pcmpistr_unaligned): New.
testsuite/ChangeLog:
PR target/53712
* gcc.target/i386/pr53712.c: New test.
From-SVN: r188753
Uros Bizjak [Mon, 18 Jun 2012 18:38:52 +0000 (20:38 +0200)]
* ChangeLog: Fix whitespace.
From-SVN: r188752
Tobias Burnus [Mon, 18 Jun 2012 18:37:16 +0000 (20:37 +0200)]
intrinsic.h (gfc_resolve_rank): New prototype.
2012-06-18 Tobias Burnus <burnus@net-b.de>
* intrinsic.h (gfc_resolve_rank): New prototype.
* intrinsic.c (add_functions): Use gfc_resolve_rank.
* iresolve.c (add_functions): New function.
* trans-intrinsic.c (gfc_conv_intrinsic_rank): New function.
(gfc_conv_intrinsic_function): Call it.
From-SVN: r188751
Tobias Burnus [Mon, 18 Jun 2012 18:31:54 +0000 (20:31 +0200)]
re PR fortran/53692 (OPTIONAL: Scalarizing over the wrong array)
2012-06-18 Tobias Burnus <burnus@net-b.de>
PR fortran/53692
* trans-array.c (set_loop_bounds): Don't scalarize via absent
optional arrays.
* resolve.c (resolve_elemental_actual): Don't stop resolving
after printing a warning.
2012-06-18 Tobias Burnus <burnus@net-b.de>
PR fortran/53692
* gfortran.dg/elemental_optional_args_6.f90: New.
From-SVN: r188749
Tobias Burnus [Mon, 18 Jun 2012 18:15:51 +0000 (20:15 +0200)]
re PR fortran/53526 ([Coarray] (lib) Properly handle MOVE_ALLOC for coarrays)
2012-06-18 Tobias Burnus <burnus@net-b.de>
PR fortran/53526
* trans-intrinsic.c (conv_intrinsic_move_alloc): Handle
* coarrays.
2012-06-18 Tobias Burnus <burnus@net-b.de>
PR fortran/53526
* gfortran.dg/coarray_lib_move_alloc_1.f90: New.
From-SVN: r188748
Tobias Burnus [Mon, 18 Jun 2012 18:14:06 +0000 (20:14 +0200)]
re PR fortran/53526 ([Coarray] (lib) Properly handle MOVE_ALLOC for coarrays)
2012-06-18 Tobias Burnus <burnus@net-b.de>
PR fortran/53526
* check.c (gfc_check_move_alloc): Reject coindexed actual
* arguments
and those with different corank.
2012-06-18 Tobias Burnus <burnus@net-b.de>
PR fortran/53526
* gfortran.dg/coarray_27.f90: New.
From-SVN: r188747
Joey Ye [Mon, 18 Jun 2012 18:10:41 +0000 (19:10 +0100)]
epilog-1.c: New test.
gcc/testsuite
2012-06-18 Joey Ye <Joey.Ye@arm.com>
Greta Yorsh <Greta.Yorsh@arm.com>
* gcc.target/arm/epilog-1.c: New test.
Co-Authored-By: Greta Yorsh <greta.yorsh@arm.com>
From-SVN: r188746
Ian Bolton [Mon, 18 Jun 2012 18:06:54 +0000 (18:06 +0000)]
As a result of the previous changes, epilogue_insns pattern can only be generated in Thumb1.
As a result of the previous changes, epilogue_insns pattern can only be
generated in Thumb1. After removing other cases in define_insn for
epilogue_insns, the function arm_output_epilogue becomes dead code and can
be eliminated, along with all its helper functions.
gcc/
2012-06-18 Ian Bolton <ian.bolton@arm.com>
Sameera Deshpande <sameera.deshpande@arm.com>
Greta Yorsh <greta.yorsh@arm.com>
* config/arm/arm-protos.h (arm_output_epilogue): Remove.
* config/arm/arm.c (print_multi_reg): Remove.
(vfp_output_fldmd): Likewise.
(arm_output_epilogue): Likewise.
* config/arm/arm.md (epilogue_insns): Update condition and code.
Co-Authored-By: Greta Yorsh <greta.yorsh@arm.com>
Co-Authored-By: Sameera Deshpande <sameera.deshpande@arm.com>
From-SVN: r188745
Ian Bolton [Mon, 18 Jun 2012 18:02:03 +0000 (18:02 +0000)]
Generate RTL for return in Thumb2 mode. Used by expand of return insn.
2012-06-18 Ian Bolton <ian.bolton@arm.com>
Sameera Deshpande <sameera.deshpande@arm.com>
Greta Yorsh <greta.yorsh@arm.com>
* config/arm/arm-protos.h (thumb2_expand_return): New declaration.
* config/arm/arm.c (thumb2_expand_return): New function.
* config/arm/arm.md (return): Update condition and code.
Co-Authored-By: Greta Yorsh <greta.yorsh@arm.com>
Co-Authored-By: Sameera Deshpande <sameera.deshpande@arm.com>
From-SVN: r188744
Ian Bolton [Mon, 18 Jun 2012 17:57:06 +0000 (17:57 +0000)]
Add a new parameter to the function output_return_instruction to handle simple...
Add a new parameter to the function output_return_instruction to handle
simple cases of return when no epilogue needs to be printed out.
gcc/
2012-06-18 Ian Bolton <ian.bolton@arm.com>
Sameera Deshpande <sameera.deshpande@arm.com>
Greta Yorsh <greta.yorsh@arm.com>
* config/arm/arm-protos.h (output_return_instruction): New parameter and
int to bool change of parameter types.
* config/arm/arm.c (output_return_instruction): Likewise.
* config/arm/arm.md (arm_simple_return): New pattern.
(arm_return, cond_return, cond_return_inverted): Add new arguments.
* config/arm/thumb2.md (thumb2_return): Update condition and code.
Co-Authored-By: Greta Yorsh <greta.yorsh@arm.com>
Co-Authored-By: Sameera Deshpande <sameera.deshpande@arm.com>
From-SVN: r188743
Ian Bolton [Mon, 18 Jun 2012 17:47:40 +0000 (17:47 +0000)]
The main function for epilogue RTL generation, used by expand epilogue
patterns.
gcc/
2012-06-18 Ian Bolton <ian.bolton@arm.com>
Sameera Deshpande <sameera.deshpande@arm.com>
Greta Yorsh <greta.yorsh@arm.com>
* config/arm/arm-protos.h (arm_expand_epilogue): New declaration.
* config/arm/arm.c (arm_expand_epilogue): New function.
* config/arm/arm.md (epilogue): Update condition and code.
(sibcall_epilogue): Likewise.
Co-Authored-By: Greta Yorsh <greta.yorsh@arm.com>
Co-Authored-By: Sameera Deshpande <sameera.deshpande@arm.com>
From-SVN: r188742
Ian Bolton [Mon, 18 Jun 2012 17:38:21 +0000 (17:38 +0000)]
Helper function for epilogue expansion.
Helper function for epilogue expansion. Emit RTL for APCS frame epilogue
(when -mapcs-frame command line option is specified).
This function is used by a later patch.
gcc/
2012-06-18 Ian Bolton <ian.bolton@arm.com>
Sameera Deshpande <sameera.deshpande@arm.com>
Greta Yorsh <greta.yorsh@arm.com>
* config/arm/arm.c (arm_expand_epilogue_apcs_frame): New function.
* config/arm/arm.md (arm_addsi3) Add an alternative.
Co-Authored-By: Greta Yorsh <greta.yorsh@arm.com>
Co-Authored-By: Sameera Deshpande <sameera.deshpande@arm.com>
From-SVN: r188741
Ian Bolton [Mon, 18 Jun 2012 17:30:41 +0000 (17:30 +0000)]
New define insn pattern for epilogue with floating point registers (DFmode) and...
New define insn pattern for epilogue with floating point registers (DFmode)
and a new function that emits RTL for this pattern. This function is a
helper for epilogue extension. It is used by a later patch.
gcc/
2012-06-18 Ian Bolton <ian.bolton@arm.com>
Sameera Deshpande <sameera.deshpande@arm.com>
Greta Yorsh <greta.yorsh@arm.com>
* config/arm/arm.md (vfp_pop_multiple_with_writeback) New
define_insn.
* config/arm/predicates.md (pop_multiple_fp) New special predicate.
* config/arm/arm.c (arm_emit_vfp_multi_reg_pop): New function.
Co-Authored-By: Greta Yorsh <greta.yorsh@arm.com>
Co-Authored-By: Sameera Deshpande <sameera.deshpande@arm.com>
From-SVN: r188740
Ian Bolton [Mon, 18 Jun 2012 17:24:25 +0000 (17:24 +0000)]
This patch adds new define_insn patterns for epilogue with integer
registers.
The patterns can handle pop multiple with writeback and return (loading into
PC directly).
To handle return, the patterns use a new special predicate
pop_multiple_return, that uses ldm_stm_operation_p function from a previous
patch. To output assembly, the patterns use a new function
arm_output_multireg_pop.
This patch also adds a new function arm_emit_multi_reg_pop
that emits RTL that matches the new pop patterns for integer registers.
This is a helper function for epilogue expansion. It is used by a later
patch.
2012-06-18 Ian Bolton <ian.bolton@arm.com>
Sameera Deshpande <sameera.deshpande@arm.com>
Greta Yorsh <greta.yorsh@arm.com>
* config/arm/arm.md (load_multiple_with_writeback) New define_insn.
(load_multiple, pop_multiple_with_writeback_and_return) Likewise.
(pop_multiple_with_return, ldr_with_return) Likewise.
* config/arm/predicates.md (pop_multiple_return) New special predicate.
* config/arm/arm-protos.h (arm_output_multireg_pop) New declaration.
* config/arm/arm.c (arm_output_multireg_pop) New function.
(arm_emit_multi_reg_pop): New function.
Co-Authored-By: Greta Yorsh <greta.yorsh@arm.com>
Co-Authored-By: Sameera Deshpande <sameera.deshpande@arm.com>
From-SVN: r188739
Greta Yorsh [Mon, 18 Jun 2012 17:06:35 +0000 (18:06 +0100)]
This patch updates ldm_stm_operation_p to check for loads that if SP is in the register list...
This patch updates ldm_stm_operation_p to check for loads that if SP is in
the register list, then the base register is SP. It guarantees that SP is
reset correctly when an LDM instruction is interrupted. Otherwise, we might
end up with a corrupt stack.
gcc/
2012-06-18 Greta Yorsh <greta.yorsh@arm.com>
* config/arm/arm.c (ldm_stm_operation_p): Require SP
as base register for loads if SP is in the register list.
From-SVN: r188738
Richard Guenther [Mon, 18 Jun 2012 14:05:27 +0000 (14:05 +0000)]
re PR tree-optimization/53693 (ICE in vect_get_vec_def_for_stmt_copy, at tree-vect-stmts.c:1438)
2012-06-18 Richard Guenther <rguenther@suse.de>
PR tree-optimization/53693
* tree-vect-patterns.c (vect_operation_fits_smaller_type):
Reject operands with more than one use.
* g++.dg/torture/pr53693.C: New testcase.
From-SVN: r188733
Bill Schmidt [Mon, 18 Jun 2012 12:22:37 +0000 (12:22 +0000)]
re PR tree-optimization/53703 (verify_ssa: definition in block 105 does not dominate use in block 103)
gcc:
2012-06-18 Bill Schmidt <wschmidt@linux.ibm.com>
PR tree-optimization/53703
* tree-ssa-phiopt.c (hoist_adjacent_loads): Skip virtual phis;
correctly set bb_for_def[12].
gcc/testsuite:
2012-06-18 Bill Schmidt <wschmidt@linux.ibm.com>
PR tree-optimization/53703
* gcc.dg/torture/pr53703.c: New test.
From-SVN: r188731
Steven Bosscher [Mon, 18 Jun 2012 11:34:28 +0000 (11:34 +0000)]
vax.h (VMS_TARGET): Remove.
gcc/
* config/vax/vax.h (VMS_TARGET): Remove.
cp/
* decl.c (finish_function): Remove code conditional on VMS_TARGET.
From-SVN: r188729
Richard Guenther [Mon, 18 Jun 2012 11:11:32 +0000 (11:11 +0000)]
tree-vrp.c (extract_range_from_assert): Split out range intersecting code.
2012-06-18 Richard Guenther <rguenther@suse.de>
* tree-vrp.c (extract_range_from_assert): Split out range
intersecting code.
(intersect_ranges): New function.
(vrp_intersect_ranges): Likewise.
From-SVN: r188728
Andreas Krebbel [Mon, 18 Jun 2012 11:05:41 +0000 (11:05 +0000)]
s390.c (s390_gimplify_va_arg): Revert change from r187965.
2012-06-18 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/s390/s390.c (s390_gimplify_va_arg): Revert change from
r187965.
From-SVN: r188727
Tejas Belagod [Mon, 18 Jun 2012 10:43:03 +0000 (11:43 +0100)]
Implement support for int iterators.
From-SVN: r188726
Richard Sandiford [Mon, 18 Jun 2012 09:32:51 +0000 (09:32 +0000)]
re PR middle-end/53698 (ICE: in plus_constant, at explow.c:88 with -O -mx32 -maddress-mode=long -fno-tree-dominator-opts)
gcc/
PR middle-end/53698
* expr.c (expand_expr_addr_expr_1): Convert to tmode before
performing an addition.
gcc/testsuite/
PR middle-end/53698
* gcc.target/i386/pr53698.c: New test.
From-SVN: r188725
GCC Administrator [Mon, 18 Jun 2012 00:18:37 +0000 (00:18 +0000)]
Daily bump.
From-SVN: r188721
Uros Bizjak [Sun, 17 Jun 2012 22:14:03 +0000 (00:14 +0200)]
* gcc.target/i386/pr33329.c: .
From-SVN: r188717
Uros Bizjak [Sun, 17 Jun 2012 22:09:40 +0000 (00:09 +0200)]
* gcc.target/i386/pr33329.c: Fix tabcount increase.
From-SVN: r188716
Uros Bizjak [Sun, 17 Jun 2012 22:01:25 +0000 (00:01 +0200)]
pr33329.c (f): Increase tabs array to 1024.
* gcc.target/i386/pr33329.c (f): Increase tabs array to 1024.
From-SVN: r188715
Steven Bosscher [Sun, 17 Jun 2012 21:12:24 +0000 (21:12 +0000)]
output.h (split_double): Move prototype to rtl.h.
* output.h (split_double): Move prototype to rtl.h.
(constructor_static_from_elts_p): Move prototype to tree.c.
* rtl.h (split_double): Moved here from output.h.
* tree.h (constructor_static_from_elts_p): Moved here from output.h.
* final.c (split_double): Move from here ...
* rtlanal.c (split_double): ... to here.
* expr.c: Do not include output.h.
From-SVN: r188714
Steven Bosscher [Sun, 17 Jun 2012 21:09:08 +0000 (21:09 +0000)]
forgot ChangeLog
From-SVN: r188713
Steven Bosscher [Sun, 17 Jun 2012 21:08:39 +0000 (21:08 +0000)]
cfglayout.h: Remove.
2012-06-17 Steven Bosscher <steven@gcc.gnu.org>
* cfglayout.h: Remove.
* cfglayout.c: Remove.
* function.h (struct function): Remove x_last_location field.
* function.c: Do not include cfglayout.h.
(expand_function_start): Do not call no-op force_next_line_note.
(expand_function_end): Likewise.
* cfgrtl.c: Do not include cfglayout.h. Include gt-cfgrtl.h.
(unlink_insn_chain): Moved here from cfglayout.c.
(skip_insns_after_block, label_for_bb, record_effective_endpoints,
into_cfg_layout_mode, outof_cfg_layout_mode,
pass_into_cfg_layout_mode, pass_outof_cfg_layout_mode,
relink_block_chain, fixup_reorder_chain, verify_insn_chain,
fixup_fallthru_exit_predecessor, force_one_exit_fallthru,
cfg_layout_can_duplicate_bb_p, duplicate_insn_chain,
cfg_layout_duplicate_bb, cfg_layout_initialize, break_superblocks,
cfg_layout_finalize): Likewise.
(rtl_can_remove_branch_p): Likewise.
* rtl.h (insn_scope): Move prototype from cfglayout.h here.
(duplicate_insn_chain): Likewise.
(force_next_line_note): Remove prototype.
* emit-rtl.c: Do not include tree-flow.h, egad. Include vecprim.h.
(last_location): Remove #define to emit.x_last_location.
(force_next_line_note): Remove no-op function.
(init_emit): Don't set x_last_location.
(block_locators_locs, block_locators_blocks, locations_locators_locs,
locations_locators_vals, prologue_locator, epilogue_locator,
curr_location, last_location, curr_block, last_block, curr_rtl_loc):
Move POD to here from cfglayout.c.
(insn_locators_alloc, insn_locators_finalize, insn_locators_free,
set_curr_insn_source_location, get_curr_insn_source_location,
set_curr_insn_block, get_curr_insn_block, curr_insn_locator,
locator_scope, insn_scope, locator_location, locator_line, insn_line,
locator_file, insn_file, locator_eq): Move to here from cfglayout.c.
* cfghooks.h: Remove double-include protection.
(can_copy_bbs_p, copy_bbs): Move prototypes from cfglayout.h to here.
* cfghooks.c (can_copy_bbs_p, copy_bbs): Move to here from cfglayout.c.
* final.c: Do not include cfglayout.h.
(choose_inner_scope, change_scope): Move to here from cfglayout.c.
(reemit_insn_block_notes): Likewise. Make static.
* tree-flow.h (tree_could_trap_p, operation_could_trap_helper_p,
operation_could_trap_p, tree_could_throw_p): Move from here...
* tree.h: ... to here.
* gengtype.c (open_base_files): Remove cfglayout.h from the list.
* profile.c: Do not include cfghooks.h.
* cfgloopmanip.c: Do not include cfglayout.h and cfghooks.h.
* modulo-sched.c: Likewise.
* loop-unswitch.c: Do not include cfglayout.h.
* sched-ebb.c: Likewise.
* tracer.c: Likewise.
* ddg.c: Likewise.
* tree-vect-loop-manip.c: Likewise.
* loop-init.c: Likewise.
* dwarf2out.c: Likewise.
* hw-doloop.c: Likewise.
* loop-unroll.c: Likewise.
* cfgcleanup.c: Likewise.
* bb-reorder.c: Likewise.
* sched-rgn.c: Likewise.
* tree-cfg.c: Likewise.
* config/alpha/alpha.c: Likewise.
* config/spu/spu.c: Likewise.
* config/sparc/sparc.c: Likewise.
* config/sh/sh.c: Likewise.
* config/c6x/c6x.c: Likewise.
* config/ia64/ia64.c: Likewise.
* config/rs6000/rs6000.c: Likewise.
* config/score/score.c: Likewise.
* config/mips/mips.c: Likewise.
* config/bfin/bfin.c: Likewise.
* Makefile.in (CFGAYOUT_H): Remove, and fixup users.
* config/rs6000/t-rs6000 (rs6000.o): Do not depend on cfglayout.h.
* config/spu/t-spu-elf (spu.o: $): Likewise.
* config/sparc/t-sparc (sparc.o): Do not depend on CFGLAYOUT_H.
From-SVN: r188712
Steven Bosscher [Sun, 17 Jun 2012 21:04:41 +0000 (21:04 +0000)]
cfgloop.h: Do not include rtl.h.
* cfgloop.h: Do not include rtl.h.
(enum iv_extend_code): New.
(struct rtx_iv): Use iv_extend_code instead of rtx_code.
* Makefile.in (CFGLOOP_H): Do not depend on RTL_H.
* loop-iv.c (iv_extend_to_rtx_code): New function to translate
an IV_EXTEND_CODE to an RTX_CODE.
(dump_iv_info): Update for rtx_iv field type change.
(iv_constant): Likewise.
(iv_subreg): Likewise.
(iv_extend): Likewise.
(iv_neg): Likewise.
(iv_add): Likewise.
(iv_mult): Likewise.
(iv_shift): Likewise.
(get_biv_step_1): Likewise.
(get_biv_step): Likewise.
(iv_analyze_biv): Likewise.
(get_iv_value): Likewise.
(shorten_into_mode): Likewise.
(canonicalize_iv_subregs): Likewise.
* sese.c (sese_build_liveouts): Use MAY_HAVE_DEBUG_STMTS instead
of MAY_HAVE_DEBUG_INSNS.
* tree-ssa-loop-ivopts.c: Include recog.h after expr.h.
* tree-ssa-loop-prefetch.c: Likewise.
From-SVN: r188711
Steven Bosscher [Sun, 17 Jun 2012 21:01:25 +0000 (21:01 +0000)]
expmed.c (ceil_log2): Move from here...
* expmed.c (ceil_log2): Move from here...
* hwint.c: ... to here for older GCCs...
* hwint.h: ... and here for newer GCCs.
* rtl.h (ceil_log2): Remove prototype.
* tree-phinodes.c: Do not include rtl.h.
* Makefile.in (tree-phinodes.o): Do not depend on RTL_H.
From-SVN: r188710
Steven Bosscher [Sun, 17 Jun 2012 20:55:12 +0000 (20:55 +0000)]
cris.h (TARGET_ELF): Remove.
* config/cris/cris.h (TARGET_ELF): Remove.
(FORCE_EH_FRAME_INFO_IN_DATA_SECTION): Remove.
(CRIS_ASM_OUTPUT_ALIGNED_DECL_COMMON): Simpify using TARGET_ELF==1.
(LOCAL_LABEL_PREFIX): Likewise.
* config/cris/cris.c (cris_target_asm_named_section): Remove.
(cris_option_override): Simpify using TARGET_ELF==1.
(cris_file_start): Likewise.
* config/cris/cris-protos.h (cris_target_asm_named_section): Remove.
From-SVN: r188709
Tobias Burnus [Sun, 17 Jun 2012 19:30:29 +0000 (21:30 +0200)]
re PR fortran/53691 (ICE with -Wsurprising in LAPACK 3.4.1 cgbrfsx.f)
2012-06-17 Tobias Burnus <burnus@net-b.de>
PR fortran/53691
PR fortran/53685
* check.c (gfc_calculate_transfer_sizes): Return if
SIZE= is not constant or source-size cannot be determined.
2012-06-17 Tobias Burnus <burnus@net-b.de>
PR fortran/53691
PR fortran/53685
* gfortran.dg/transfer_check_3.f90: New.
From-SVN: r188708
Uros Bizjak [Sun, 17 Jun 2012 13:54:53 +0000 (15:54 +0200)]
sfp-machine.h (FP_HANDLE_EXCEPTIONS): Use __builtin_expect when checking for exceptions.
* config/i386/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Use
__builtin_expect when checking for exceptions.
* config/ia64/sfp-machine.h (FP_HANDLE_EXCEPTIONS): Ditto.
From-SVN: r188705
Uros Bizjak [Sun, 17 Jun 2012 13:48:31 +0000 (15:48 +0200)]
sse.md (vcvtph2ps): Fix vec_select selector.
* config/i386/sse.md (vcvtph2ps): Fix vec_select selector.
From-SVN: r188704
Uros Bizjak [Sun, 17 Jun 2012 08:39:13 +0000 (10:39 +0200)]
vrp68.c: Fix scan-tree-dump-times argument order.
* gcc.dg/tree-ssa/vrp68.c: Fix scan-tree-dump-times argument order.
From-SVN: r188703
GCC Administrator [Sun, 17 Jun 2012 00:17:24 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r188701
Tobias Burnus [Sat, 16 Jun 2012 18:13:38 +0000 (20:13 +0200)]
re PR fortran/53642 (Front-end optimization: Wrong string length for deferred-length strings)
2012-06-16 Tobias Burnus <burnus@net-b.de>
PR fortran/53642
PR fortran/45170
* frontend-passes.c (optimize_assignment): Don't remove RHS's
trim when assigning to a deferred-length string.
* trans-expr.c (gfc_trans_assignment_1): Ensure that the RHS string
length is evaluated before the deferred-length LHS is reallocated.
2012-06-16 Tobias Burnus <burnus@net-b.de>
PR fortran/53642
PR fortran/45170
* gfortran.dg/deferred_type_param_8.f90: New.
From-SVN: r188692
Eric Botcazou [Sat, 16 Jun 2012 11:05:43 +0000 (11:05 +0000)]
re PR middle-end/53590 (compiler fails to generate SIMD instruction for FP division)
PR middle-end/53590
* tree-inline.c (initialize_cfun): Copy can_delete_dead_exceptions.
From-SVN: r188691
GCC Administrator [Sat, 16 Jun 2012 00:17:32 +0000 (00:17 +0000)]
Daily bump.
From-SVN: r188689
Janis Johnson [Fri, 15 Jun 2012 19:45:54 +0000 (19:45 +0000)]
gcov.exp (verify-lines, [...]): Use testname that includes flags, passed in as new argument, in pass/fail messages.
* lib/gcov.exp (verify-lines, verify-branches, verify-calls): Use
testname that includes flags, passed in as new argument, in
pass/fail messages.
(run_gcov): Get testname from dg-test, use it in pass/fail messages
and pass it to verify-* procedures.
From-SVN: r188681
Janis Johnson [Fri, 15 Jun 2012 18:04:22 +0000 (18:04 +0000)]
stackalign.exp: Combine stack alignment torture options with usual torture options.
* g++.dg/torture/stackalign/stackalign.exp: Combine stack
alignment torture options with usual torture options.
From-SVN: r188678
Janis Johnson [Fri, 15 Jun 2012 18:03:34 +0000 (18:03 +0000)]
auto27.C: Add comments to checks for multiple messages reported for one line of source code.
* g++.dg/cpp0x/auto27.C: Add comments to checks for multiple
messages reported for one line of source code.
* g++.dg/cpp0x/constexpr-decl.C: Likewise.
* g++.dg/cpp0x/decltype2.C: Likewise.
* g++.dg/cpp0x/decltype3.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-syntax1.C: Likewise.
* g++.dg/cpp0x/regress/error-recovery1.C: Likewise.
* g++.dg/cpp0x/static_assert3.C: Likewise.
* g++.dg/cpp0x/udlit-cpp98-neg.C: Likewise.
* g++.dg/cpp0x/udlit-shadow-neg.C: Likewise.
* g++.dg/cpp0x/union1.C: Likewise.
* g++.dg/cpp0x/variadic-ex10.C: Likewise.
* g++.dg/cpp0x/variadic-ex14.C: Likewise.
* g++.dg/cpp0x/variadic2.C: Likewise.
* g++.dg/cpp0x/variadic20.C: Likewise.
* g++.dg/cpp0x/variadic74.C: Likewise.
* g++.dg/diagnostic/bitfld2.C: Likewise.
* g++.dg/ext/attrib44.C: Likewise.
* g++.dg/ext/no-asm-1.C: Likewise.
* g++.dg/other/error34.C: Likewise.
* g++.dg/parse/crash46.C: Likewise.
* g++.dg/parse/error10.C: Likewise.
* g++.dg/parse/error2.C: Likewise.
* g++.dg/parse/error3.C: Likewise.
* g++.dg/parse/error36.C: Likewise.
* g++.dg/parse/error8.C: Likewise.
* g++.dg/parse/error9.C: Likewise.
* g++.dg/parse/parser-pr28152-2.C: Likewise.
* g++.dg/parse/parser-pr28152.C: Likewise.
* g++.dg/parse/template25.C: Likewise.
* g++.dg/parse/typename11.C: Likewise.
* g++.dg/tc1/dr147.C: Likewise.
* g++.dg/template/deduce3.C: Likewise.
* g++.dg/template/koenig9.C: Likewise.
* g++.dg/template/pr23510.C: Likewise.
* g++.dg/warn/pr12242.C: Likewise.
* g++.dg/warn/pr30551-2.C: Likewise.
* g++.dg/warn/pr30551.C: Likewise.
* g++.old-deja/g++.other/typename1.C: Likewise.
* g++.old-deja/g++.pt/niklas01a.C: Likewise.
From-SVN: r188677
Easwaran Raman [Fri, 15 Jun 2012 17:35:11 +0000 (17:35 +0000)]
passes.c (init_optimization_passes): Remove pass_call_cdce from its current position and insert after pass_dce.
2012-06-15 Easwaran Raman <eraman@google.com>
* passes.c (init_optimization_passes): Remove pass_call_cdce
from its current position and insert after pass_dce.
From-SVN: r188675
Walter Lee [Fri, 15 Jun 2012 17:19:16 +0000 (17:19 +0000)]
* config/tilegx/sync.md (atomic_fetch_<fetchop_name><mode>): Fix typo.
From-SVN: r188673
Richard Earnshaw [Fri, 15 Jun 2012 16:51:25 +0000 (16:51 +0000)]
arm.c (note_invalid_constants): Don't return a result.
* arm.c (note_invalid_constants): Don't return a result.
(arm_memory_load_p): Delete function.
(arm_const_double_rtx): Delete iterator variable i;
(fp_immediate_constant): Likewise.
(fp_const_from_val): Likewise.
* arm.c (arm_init_iwmmxt_builtins): Delete void_ftype_void.
From-SVN: r188672
Ramana Radhakrishnan [Fri, 15 Jun 2012 16:43:36 +0000 (16:43 +0000)]
[multiple changes]
2012-06-15 Marc Glisse <marc.glisse@inria.fr>
PR c++/51033
* c-typeck.c (c_build_vec_perm_expr): Move to c-family/c-common.c.
* c-tree.h (c_build_vec_perm_expr): Move to c-family/c-common.h.
cp/
2012-06-15 Marc Glisse <marc.glisse@inria.fr>
PR c++/51033
* semantics.c (literal_type_p): Handle VECTOR_TYPE.
(potential_constant_expression_1): Handle VEC_PERM_EXPR.
* parser.c (cp_parser_postfix_expression): Handle RID_BUILTIN_SHUFFLE.
c-family
2012-06-15 Marc Glisse <marc.glisse@inria.fr>
PR c++/51033
* c-common.h (c_build_vec_perm_expr): Move decl here.
* c-common.c (c_build_vec_perm_expr): Move definition
here.
2012-06-15 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
PR c++/51033
* c-c++-common/torture/vshuf-16.inc: Move from gcc.c-torture/execute/.
* c-c++-common/torture/vshuf-2.inc: Likewise.
* c-c++-common/torture/vshuf-4.inc: Likewise.
* c-c++-common/torture/vshuf-8.inc: Likewise.
* c-c++-common/torture/vshuf-main.inc: Likewise.
* c-c++-common/torture/vshuf-v16hi.c: Likewise.
* c-c++-common/torture/vshuf-v16qi.c: Likewise.
* c-c++-common/torture/vshuf-v2df.c: Likewise.
* c-c++-common/torture/vshuf-v2di.c: Likewise.
* c-c++-common/torture/vshuf-v2sf.c: Likewise.
* c-c++-common/torture/vshuf-v2si.c: Likewise.
* c-c++-common/torture/vshuf-v4df.c: Likewise.
* c-c++-common/torture/vshuf-v4di.c: Likewise.
* c-c++-common/torture/vshuf-v4hi.c: Likewise.
* c-c++-common/torture/vshuf-v4sf.c: Likewise.
* c-c++-common/torture/vshuf-v4si.c: Likewise.
* c-c++-common/torture/vshuf-v8hi.c: Likewise.
* c-c++-common/torture/vshuf-v8qi.c: Likewise.
* c-c++-common/torture/vshuf-v8si.c: Likewise.
From-SVN: r188671
Georg-Johann Lay [Fri, 15 Jun 2012 15:56:02 +0000 (15:56 +0000)]
avr.c (avr_default_expand_builtin): New function.
* config/avr/avr.c (avr_default_expand_builtin): New function.
(avr_expand_builtin): Use it.
(avr_expand_unop_builtin): Remove.
(avr_expand_binop_builtin): Remove.
(avr_expand_triop_builtin): Remove.
From-SVN: r188670
Michael Matz [Fri, 15 Jun 2012 14:56:26 +0000 (14:56 +0000)]
re PR middle-end/38474 (compile time explosion in dataflow_set_preserve_mem_locs at -O3)
PR middle-end/38474
* cfgexpand.c (add_alias_set_conflicts): Remove.
(expand_used_vars): Don't call it.
(aggregate_contains_union_type): Remove.
* function.c (n_temp_slots_in_use): New static data.
(make_slot_available, assign_stack_temp_for_type): Update it.
(init_temp_slots): Zero it.
(remove_unused_temp_slot_addresses): Use it for quicker removal.
(remove_unused_temp_slot_addresses_1): Use htab_clear_slot.
From-SVN: r188667
Michael Matz [Fri, 15 Jun 2012 14:46:36 +0000 (14:46 +0000)]
gimplify.c (gimplify_compound_literal_expr): Take gimple_test_f argument...
* gimplify.c (gimplify_compound_literal_expr): Take gimple_test_f
argument, don't emit assign statement if value is directly usable.
(gimplify_expr): Adjust.
testsuite/
* gcc.dg/tree-ssa/vector-4.c: New test.
From-SVN: r188665
Michael Matz [Fri, 15 Jun 2012 14:40:38 +0000 (14:40 +0000)]
gimplify.c (gimplify_modify_expr): Fold generated statements.
* gimplify.c (gimplify_modify_expr): Fold generated statements.
* gimple-fold.c (can_refer_decl_in_current_unit_p): Check flag_ltrans.
testsuite/
* gcc.dg/debug/dwarf2/inline3.c: Adjust.
* gcc.dg/tree-ssa/foldstring-1.c: Adjust.
From-SVN: r188664
Richard Guenther [Fri, 15 Jun 2012 13:38:17 +0000 (13:38 +0000)]
tree-vrp.c (set_and_canonicalize_value_range): Use canonical predicates to set VR_UNDEFINED and VR_VARYING.
2012-06-15 Richard Guenther <rguenther@suse.de>
* tree-vrp.c (set_and_canonicalize_value_range): Use canonical
predicates to set VR_UNDEFINED and VR_VARYING. Drop a case
we assert for in set_value_range to VR_VARYING.
From-SVN: r188663
Richard Earnshaw [Fri, 15 Jun 2012 13:32:09 +0000 (13:32 +0000)]
arm.md (addsf3, adddf3): Use s_register_operand.
* arm.md (addsf3, adddf3): Use s_register_operand.
(subsf3, subdf3): Likewise.
(mulsf3, muldf3): Likewise.
(difsf3, divdf3): Likewise.
(movsfcc, movdfcc): Likewise.
* predicates.md (f_register_operand): Delete.
(arm_float_rhs_operand): Delete.
(arm_float_add_operand): Delete.
(arm_float_compare_operand): Use s_register_operand when
there's no VFP.
(cirrus_register_operand): Delete.
(cirrus_fp_register): Delete.
(cirrus_shift_const): Delete.
(cmpdi_operand): Remove Maverick support.
* constraints.md (f, v, H): Delete constraints.
(G): Update documentation.
* arm.c (fp_consts_inited): Convert to bool.
(strings_fp): Delete.
(values_fp): Delete.
(value_fp0): New variable.
(init_fp_table): Simplify logic.
(arm_const_double_rtx): Likewise.
(fp_immediate_constant): Likewise.
(fp_const_from_val): Likewise.
(neg_const_double_rtx_ok_for_fpa): Delete.
* doc/md.texi (ARM constraints): Update documentation.
From-SVN: r188662
Ulrich Weigand [Fri, 15 Jun 2012 13:30:36 +0000 (13:30 +0000)]
re PR tree-optimization/53636 (SLP may create invalid unaligned memory accesses)
gcc/
PR tree-optimization/53636
* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Verify
stride when doing basic-block vectorization.
gcc/testsuite/
PR tree-optimization/53636
* gcc.target/arm/pr53636.c: New test.
From-SVN: r188661
Ramana Radhakrishnan [Fri, 15 Jun 2012 13:06:51 +0000 (13:06 +0000)]
tree-vect-generic.c (lower_vec_perm): Propagate vector constants into VEC_PERM_EXPR.
2012-06-15 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
* tree-vect-generic.c (lower_vec_perm): Propagate vector constants
into VEC_PERM_EXPR.
From-SVN: r188659
Jakub Jelinek [Fri, 15 Jun 2012 11:08:28 +0000 (13:08 +0200)]
tree-vect-patterns.c (vect_pattern_recog): Don't unnecessarily allocate and free bbs array for the SLP case.
* tree-vect-patterns.c (vect_pattern_recog): Don't unnecessarily
allocate and free bbs array for the SLP case.
From-SVN: r188657
Jakub Jelinek [Fri, 15 Jun 2012 11:07:47 +0000 (13:07 +0200)]
re PR tree-optimization/51581 (Integer division by constant is not vectorized)
PR tree-optimization/51581
* expr.h (choose_multiplier): New prototype.
* expmed.c (choose_multiplier): No longer static.
Change multiplier_ptr from rtx * to UHWI *.
(expand_divmod): Adjust callers.
* tree-vect-patterns.c (vect_recog_sdivmod_pow2_pattern):
Renamed to...
(vect_recog_divmod_pattern): ... this. Pass bb_vinfo as last
argument to new_stmt_vec_info. Attempt to optimize also divisions
by non-pow2 constants if integer vector division isn't supported.
* tree-vect-stmts.c (vect_analyze_stmt): If node != NULL,
don't look at pattern stmts and sequences.
* gcc.c-torture/execute/pr51581-1.c: New test.
* gcc.c-torture/execute/pr51581-2.c: New test.
* gcc.dg/vect/pr51581-1.c: New test.
* gcc.dg/vect/pr51581-2.c: New test.
* gcc.dg/vect/pr51581-3.c: New test.
* gcc.target/i386/avx-pr51581-1.c: New test.
* gcc.target/i386/avx-pr51581-2.c: New test.
* gcc.target/i386/avx2-pr51581-1.c: New test.
* gcc.target/i386/avx2-pr51581-2.c: New test.
* gcc.dg/vect/slp-26.c (main1): Divide by 0x8031 instead of 3.
From-SVN: r188656
Richard Guenther [Fri, 15 Jun 2012 11:06:16 +0000 (11:06 +0000)]
20120615-1.c: New testcase.
2012-06-15 Richard Guenther <rguenther@suse.de>
* gcc.c-torture/execute/
20120615-1.c: New testcase.
From-SVN: r188655
Eric Botcazou [Fri, 15 Jun 2012 10:41:13 +0000 (10:41 +0000)]
re PR ada/53592 (ICE on assignment to component of vector_type)
PR ada/53592
* gcc-interface/gigi.h (maybe_vector_array): Make static inline.
* gcc-interface/utils.c (maybe_vector_array): Delete.
* gcc-interface/trans.c (gnat_to_gnu) <N_Indexed_Component>: Mark the
array object as addressable if it has vector type and is on the LHS.
From-SVN: r188653
Eric Botcazou [Fri, 15 Jun 2012 09:22:00 +0000 (09:22 +0000)]
re PR middle-end/53590 (compiler fails to generate SIMD instruction for FP division)
PR middle-end/53590
* common.opt (-fdelete-dead-exceptions): New switch.
* doc/invoke.texi (Code Gen Options): Document it.
* cse.c (count_reg_usage) <CALL_INSN>: Use !insn_nothrow_p in lieu of
insn_could_throw_p predicate. Do not skip an insn that could throw
if dead exceptions can be deleted.
(insn_live_p): Likewise, do not return true in that case.
* dce.c (can_alter_cfg): New flag.
(deletable_insn_p): Do not return false for an insn that can throw if
the CFG can be altered and dead exceptions can be deleted.
(init_dce): Set can_alter_cfg to false for fast DCE, true otherwise.
* dse.c (scan_insn): Use !insn_nothrow_p in lieu of insn_could_throw_
predicate. Do not preserve an insn that could throw if dead exceptions
can be deleted.
* function.h (struct function): Add can_delete_dead_exceptions flag.
* function.c (allocate_struct_function): Set it.
* lto-streamer-in.c (input_struct_function_base): Stream it.
* lto-streamer-out.c (input_struct_function_base): Likewise.
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Do not mark a
statement that could throw as necessary if dead exceptions can be
deleted.
ada/
* gcc-interface/misc.c (gnat_init_options_struct): Set
opts->x_flag_delete_dead_exceptions to 1.
From-SVN: r188651
Andreas Schwab [Fri, 15 Jun 2012 08:08:04 +0000 (08:08 +0000)]
locks.h (compare_and_swap): Use __sync_bool_compare_and_swap.
* sysdep/m68k/locks.h (compare_and_swap): Use
__sync_bool_compare_and_swap.
(release_set): Use write_barrier instead of inlining it.
From-SVN: r188650
Andreas Krebbel [Fri, 15 Jun 2012 07:29:26 +0000 (07:29 +0000)]
2012-06-15 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* sysdep/s390/locks.h (compare_and_swap, release_set)
(read_barrier, write_barrier): Use the GCC atomic builtins.
From-SVN: r188649
Uros Bizjak [Fri, 15 Jun 2012 06:53:28 +0000 (08:53 +0200)]
(*zero_extendsidi2_rex64): Remove isa attribute.
From-SVN: r188648
Jonathan Wakely [Fri, 15 Jun 2012 00:27:29 +0000 (00:27 +0000)]
re PR libstdc++/53578 (include/ext/concurrence.h relies on ill-formed narrowing conversions)
PR libstdc++/53578
* include/ext/concurrence.h (__recursive_mutex::_S_destroy): Fix
narrowing conversion.
* include/std/mutex (__recursive_mutex_base::_S_destroy): Likewise.
From-SVN: r188646
GCC Administrator [Fri, 15 Jun 2012 00:18:49 +0000 (00:18 +0000)]
Daily bump.
From-SVN: r188645
Kaz Kojima [Thu, 14 Jun 2012 22:58:05 +0000 (22:58 +0000)]
Update sysdep/sh/locks.h with atomic builtins
Update sysdep/sh/locks.h with atomic builtins
* sysdep/sh/locks.h (__cas_lock): Remove.
(__cas_start_atomic, __cas_end_atomic): Likewise.
(compare_and_swap): Call __sync_bool_compare_and_swap.
From-SVN: r188640
Maxim Kuvyrkov [Thu, 14 Jun 2012 22:46:03 +0000 (22:46 +0000)]
* config/tilegx/sync.md (atomic_fetch_sub<mode>): Fix typo.
From-SVN: r188639
Jonathan Wakely [Thu, 14 Jun 2012 22:20:52 +0000 (22:20 +0000)]
re PR libstdc++/53270 (Error when bootstrapping gcc on hppa2.0-unknown-linux-gcc)
PR libstdc++/53270
* include/ext/concurrence.h (__mutex, __recursive_mutex, __cond): Use
NSDMI in C++11 mode.
* include/ext/rope (_Refcount_Base): Likewise. Destroy mutex in
destructor when initialized by function.
From-SVN: r188637
Jonathan Wakely [Thu, 14 Jun 2012 22:07:33 +0000 (22:07 +0000)]
re PR libstdc++/53648 ([C++11] nested empty tuples)
PR libstdc++/53648
* include/std/tuple (__empty_not_final): Do not use EBO for tuples.
* testsuite/20_util/tuple/53648.cc: New.
* testsuite/20_util/uses_allocator/cons_neg.cc: Adjust dg-error line
number.
From-SVN: r188636
Jonathan Wakely [Thu, 14 Jun 2012 20:32:11 +0000 (20:32 +0000)]
* doc/xml/manual/status_cxx2011.xml: Correct C++11 status table.
From-SVN: r188635
Uros Bizjak [Thu, 14 Jun 2012 19:38:12 +0000 (21:38 +0200)]
Fix my previous commit to:
* config/i386/i386.md (*zero_extendsidi2): Remove x,x alternative.
(*zero_extendsidi2_rex64): Ditto.
From-SVN: r188634
Oleg Endo [Thu, 14 Jun 2012 19:33:10 +0000 (19:33 +0000)]
re PR target/53568 (SH Target: Add support for bswap built-ins)
PR target/53568
* config/sh/sh.md: Add peephole for swapbsi2.
(*swapbisi2_and_shl8, *swapbhisi2): New insns and splits.
From-SVN: r188632
Uros Bizjak [Thu, 14 Jun 2012 18:51:36 +0000 (20:51 +0200)]
i386.md (*zero_extendsidi2): Mark movd alternatives SSE2 only.
* config/i386/i386.md (*zero_extendsidi2): Mark movd alternatives
SSE2 only. Remove x,x alternative.
(*zero_extendsidi2_rex64): Ditto.
From-SVN: r188630
Jakub Jelinek [Thu, 14 Jun 2012 18:26:53 +0000 (20:26 +0200)]
re PR target/53639 (x86_64: redundant 64-bit operations on 32-bit integers)
PR target/53639
* config/i386/i386.md (*anddi_1 into *andsi_1_zext splitter): New.
From-SVN: r188629