Commit Graph

117603 Commits

Author SHA1 Message Date
Rainer Orth 32e36d1a83 Clear hwcap_2 with Sun ld
* gcc.target/i386/clearcapv2.map: New file.
	* gcc.target/i386/i386.exp: Try it first before clearcap.map.

From-SVN: r188820
2012-06-20 09:17:53 +00:00
Steven Bosscher 3e71d9533a cris.c: Include cgraph.h.
* config/cris/cris.c: Include cgraph.h.
	(cris_option_override): Do not set non-existing flag_no_gcc_ident.

From-SVN: r188818
2012-06-20 08:13:39 +00:00
Kaz Kojima aa5cc52b1a stack-usage-1.c: Remove dg-options line for sh targets and add __sh__ case.
* gcc.dg/stack-usage-1.c: Remove dg-options line for sh targets
	and add __sh__ case.

From-SVN: r188815
2012-06-20 07:37:48 +00:00
Jason Merrill 0a337ebd0a re PR c++/52637 (ICE producing debug info for c++11 code using local class as template argument)
PR c++/52637
	* g++.dg/debug/localclass1.C: New.

From-SVN: r188814
2012-06-20 03:27:07 -04:00
Ville Voutilainen 6830e502a2 parser.c (cp_parser_direct_declarator): Move virt-specifier parsing after late-specified return type parsing.
* parser.c (cp_parser_direct_declarator): Move virt-specifier
	parsing after late-specified return type parsing.

From-SVN: r188808
2012-06-19 21:18:08 -04:00
Jason Merrill 420bf978a7 re PR c++/53651 ([C++11] seg fault when specifying using decltype(...)::method)
PR c++/53651
	* name-lookup.c (constructor_name_p): Don't try to look at the
	name of a DECLTYPE_TYPE.

From-SVN: r188807
2012-06-19 21:17:59 -04:00
Maxim Kuvyrkov 8930883ee9 emit-rtl.c (need_atomic_barrier_p): New function.
* emit-rtl.c (need_atomic_barrier_p): New function.
	* emit-rtl.h (need_atomic_barrier_p): Declare it.
	* config/alpha/alpha.c (alpha_{pre,post}_atomic_barrier): Use it.
	* config/arm/arm.c (arm_{pre,post}_atomic_barrier): Use it.
	* config/tilegx/tilegx.c (tile_{pre,post}_atomic_barrier): Use it.
	* config/mips/mips.c (mips_{pre,post}_atomic_barrier_p): Remove.
	(mips_process_sync_loop): Use generic version instead.

From-SVN: r188806
2012-06-20 01:05:25 +00:00
Maxim Kuvyrkov ff6191481c mips.c (mips_process_sync_loop): Emit cmp result only if it is used.
2012-06-19  Maxim Kuvyrkov  <maxim@codesourcery.com>

	* config/mips/mips.c (mips_process_sync_loop): Emit cmp result only if
	it is used.

From-SVN: r188805
2012-06-20 01:01:00 +00:00
Tom de Vries 6399761a4a constraints.md (ZR): New constraint.
2012-06-19  Tom de Vries  <vries@codesourcery.com>
            Maxim Kuvyrkov  <maxim@codesourcery.com>

	* config/mips/constraints.md (ZR): New constraint.
	* config/mips/predicates.md (mem_noofs_operand): New predicate.
	* config/mips/mips.c (mips_print_operand): Handle new print modifier.
        * config/mips/mips.h (TARGET_XLP): Define.
	(TARGET_SYNC_AFTER_SC): Update.
	(ISA_HAS_SWAP, ISA_HAS_LDADD): Define.
	* config/mips/sync.md (atomic_exchange, atomic_fetch_add): Use
	XLP-specific swap and ldadd patterns.
	(atomic_exchange_swap, atomic_fetch_add_ldadd): New patterns.

Co-Authored-By: Maxim Kuvyrkov <maxim@codesourcery.com>

From-SVN: r188804
2012-06-20 00:59:08 +00:00
Tom de Vries 01c196ea91 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
2012-06-20 00:57:23 +00:00
GCC Administrator e98f6824d6 Daily bump.
From-SVN: r188802
2012-06-20 00:18:50 +00:00
Kaz Kojima 9ea722f2c6 stack-usage-1.c: Use sh*-*-* instead of sh-*-*.
* gcc.dg/stack-usage-1.c: Use sh*-*-* instead of sh-*-*.

From-SVN: r188796
2012-06-19 22:29:24 +00:00
Joseph Myers b513d0fe82 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
2012-06-19 23:08:49 +01:00
Richard Henderson f49278e65e Set cache parameters for alpha
From-SVN: r188794
2012-06-19 14:08:03 -07:00
Steven Bosscher 70f42967b3 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
2012-06-19 20:44:47 +00:00
Steven Bosscher c85fd25b17 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
2012-06-19 20:01:23 +00:00
Steven Bosscher a8781821e0 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
2012-06-19 19:55:33 +00:00
Uros Bizjak e42d5b2d0e 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
2012-06-19 20:24:26 +02:00
Richard Henderson 3a6a2759a6 pr33329.c: Change multiplier constant to 12345
From-SVN: r188788
2012-06-19 11:19:37 -07:00
Richard Henderson 73e9d63709 Handle const_vector in mulv4si3 for pre-sse4.1.
From-SVN: r188787
2012-06-19 11:19:26 -07:00
Richard Henderson 84ddb6810c Use synth_mult for vector multiplies vs scalar constant
From-SVN: r188786
2012-06-19 11:19:16 -07:00
Richard Henderson 6bc0ff89a1 Add rtx costs for sse integer ops
From-SVN: r188785
2012-06-19 11:19:03 -07:00
David Edelsohn b1f75d7653 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
2012-06-19 13:55:14 -04:00
Uros Bizjak b13024e6ad 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
2012-06-19 18:32:57 +02:00
Uros Bizjak d35d1c0fee 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
2012-06-19 18:28:50 +02:00
Richard Guenther bbe10a06e0 vrp68.c: Adjust testcase.
2012-06-19  Richard Guenther  <rguenther@suse.de>

	* gcc.dg/tree-ssa/vrp68.c: Adjust testcase.

From-SVN: r188781
2012-06-19 15:28:50 +00:00
Richard Guenther b54e19c27a 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
2012-06-19 14:59:39 +00:00
Richard Earnshaw 82981dc4cd 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
2012-06-19 13:41:43 +00:00
Richard Guenther 105b7208d1 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
2012-06-19 13:06:35 +00:00
Richard Guenther af4d0d913b 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
2012-06-19 09:19:07 +00:00
Lawrence Crowl a910399dfd 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
2012-06-19 01:30:31 +00:00
GCC Administrator 1cc7e0d0c3 Daily bump.
From-SVN: r188764
2012-06-19 00:20:02 +00:00
Doug Evans 1810019879 * dwarf2.def (DW_OP): Add DW_OP_GNU_const_index.
From-SVN: r188759
2012-06-18 23:35:08 +00:00
Jörg Sonnenberger 843f0d3c88 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
2012-06-18 22:43:58 +01:00
David Edelsohn f897891a10 * config/rs6000/aix52.h (TARGET_EXTRA_BUILTINS): Define as 0.
From-SVN: r188754
2012-06-18 16:05:48 -04:00
Uros Bizjak b86da593bb 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
2012-06-18 20:41:25 +02:00
Uros Bizjak 1a73c9e406 * ChangeLog: Fix whitespace.
From-SVN: r188752
2012-06-18 20:38:52 +02:00
Tobias Burnus 32e7b05d82 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
2012-06-18 20:37:16 +02:00
Tobias Burnus 478ad83d94 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
2012-06-18 20:31:54 +02:00
Tobias Burnus c1fb34c3ae 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
2012-06-18 20:15:51 +02:00
Tobias Burnus 284943b022 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
2012-06-18 20:14:06 +02:00
Joey Ye 469523083f 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
2012-06-18 19:10:41 +01:00
Ian Bolton c59e1214f7 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
2012-06-18 19:06:54 +01:00
Ian Bolton 482baa63f3 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
2012-06-18 19:02:03 +01:00
Ian Bolton f79b86a43e 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
2012-06-18 18:57:06 +01:00
Ian Bolton d461c88a25 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
2012-06-18 18:47:40 +01:00
Ian Bolton 0f9926f367 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
2012-06-18 18:38:21 +01:00
Ian Bolton 4b2678f886 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
2012-06-18 18:30:41 +01:00
Ian Bolton 3aee198212 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
2012-06-18 18:24:25 +01:00
Greta Yorsh 474038cda9 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
2012-06-18 18:06:35 +01:00