Commit Graph

141176 Commits

Author SHA1 Message Date
Ramana Radhakrishnan
899de23a3c [AArch64] Use default_elf_asm_named_section instead of special cased hook
Hi,

The hook for TARGET_ASM_NAMED_SECTION was defined separately in
the backend around the time frame for GCC 4.7 under the assumption
that '@' would be used as a comment character in the binutils port.

This was indeed true in versions of the AArch64 port that never made it
into the FSF tree. However this practice was killed
before the binutils port made it upstream. Doing archaeology into
various revisions including the first commit of upstream binutils,
talking to Marcus about the history of this and actually testing the
first commit of binutils, I can confidently say that the upstream binutils
port never had any use of '@' as a comment character for AArch64
However we never got rid of the special cased handling in
GCC and the duplication of code in the AArch64 backend.

This was found when I was playing with Virtual Table verification
on ARM and AArch64 and discovered ICEs which were similar but manifested
in different places begging the obvious question.

Tested on aarch64-none-elf with no regressions.

Ok to apply ?

Ramana

2015-10-02  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	* config/aarch64/aarch64.c (aarch64_elf_asm_named_section): Delete.
	(TLS_SECTION_ASM_FLAG): Delete.

From-SVN: r228390
2015-10-02 13:08:43 +00:00
Marek Polacek
3e3b8d63e5 re PR c/64249 (Missing warning for if (A) else if (A))
PR c/64249
	* c-common.c (warn_duplicated_cond_add_or_warn): New function.
	* c-common.h (warn_duplicated_cond_add_or_warn): Declare.
	* c.opt (Wduplicated-cond): New option.

	* c-parser.c (c_parser_statement_after_labels): Add CHAIN parameter
	and pass it down to c_parser_if_statement.
	(c_parser_else_body): Add CHAIN parameter and pass it down to
	c_parser_statement_after_labels.
	(c_parser_if_statement): Add CHAIN parameter.  Add code to warn about
	duplicated if-else-if conditions.

	* parser.c (cp_parser_statement): Add CHAIN parameter and pass it
	down to cp_parser_selection_statement.
	(cp_parser_selection_statement): Add CHAIN parameter.  Add code to
	warn about duplicated if-else-if conditions.
	(cp_parser_implicitly_scoped_statement): Add CHAIN parameter and pass
	it down to cp_parser_statement.

	* doc/invoke.texi: Document -Wduplicated-cond.
	* Makefile.in (insn-latencytab.o): Use -Wno-duplicated-cond.
	(insn-dfatab.o): Likewise.
	* genemit.c (gen_exp): Rewrite condition to avoid -Wduplicated-cond
	warning.

	* c-c++-common/Wduplicated-cond-1.c: New test.
	* c-c++-common/Wduplicated-cond-2.c: New test.
	* c-c++-common/Wduplicated-cond-3.c: New test.
	* c-c++-common/Wduplicated-cond-4.c: New test.
	* c-c++-common/Wmisleading-indentation.c (fn_37): Avoid
	-Wduplicated-cond warning.

From-SVN: r228388
2015-10-02 12:56:17 +00:00
Renlin Li
0f6ca79c15 [PATCH][AARCH64]Add csneg3_uxtw_insn pattern
gcc/

2015-10-02  Renlin Li <renlin.li@arm.com>

	* config/aarch64/aarch64.md (csneg3_uxtw_insn): New pattern.

gcc/testsuite/

2015-10-02  Renlin Li <renlin.li@arm.com>

	* gcc.target/aarch64/csneg-1.c: Update test.

From-SVN: r228387
2015-10-02 12:52:36 +00:00
Oleg Endo
b03e67ad92 sh.md: Add new unnamed split pattern to handle movt-movt sequences.
gcc/
	* config/sh/sh.md: Add new unnamed split pattern to handle movt-movt
	sequences.

From-SVN: r228386
2015-10-02 12:30:05 +00:00
Renlin Li
1d3e6ed315 [PATCH][AARCH64][PR66776]Add cmovdi_insn_uxtw pattern.
gcc/

2015-10-02  Renlin Li  <renlin.li@arm.com>

	PR target/66776
	* config/aarch64/aarch64.md (cmovdi_insn_uxtw): New pattern.

gcc/testsuite/

2015-10-02  Renlin Li  <renlin.li@arm.com>

	PR target/66776
	* gcc.target/aarch64/pr66776.c: New.

From-SVN: r228384
2015-10-02 11:55:04 +00:00
Florian Weimer
bec93d4075 MAINTAINERS: Update email address.
From-SVN: r228383
2015-10-02 12:13:48 +02:00
Doug Rupp
4d928625a4 lang.opt (fbuiltin-printf): Accept.
* gcc-interface/lang.opt (fbuiltin-printf): Accept.
	* gcc-interface/misc.c (gnat_handle_option): Ignore it.
	* gcc-interface/lang-specs.h (@ada, @adawhy, @adascil): Propagate -f*
	flags as -g* and -m* flags past -gnatez.

Co-Authored-By: Olivier Hainque <hainque@adacore.com>

From-SVN: r228381
2015-10-02 09:45:45 +00:00
Louis Krupp
0487f06dd1 MAINTAINERS (Write After Approval): Add myself.
2015-10-02  Louis Krupp <louis.krupp@zoho.com>

	* MAINTAINERS  (Write After Approval): Add myself.

From-SVN: r228380
2015-10-02 09:29:32 +00:00
Eric Botcazou
0cec1c2da3 trans.c (Pragma_to_gnu): Replace linear search with call to find_opt and issue warnings if...
* gcc-interface/trans.c (Pragma_to_gnu) <Pragma_Warnings>: Replace
	linear search with call to find_opt and issue warnings if the -W
	switch is not appropriate.

From-SVN: r228379
2015-10-02 09:28:56 +00:00
Louis Krupp
e0512e8dc4 Back out improper commit
From-SVN: r228378
2015-10-02 09:26:40 +00:00
Eric Botcazou
1ddde8dca2 ada-tree.h (DECL_RESTRICTED_ALIASING_P): New flag.
* gcc-interface/ada-tree.h (DECL_RESTRICTED_ALIASING_P): New flag.
	* gcc-interface/decl.c (gnat_to_gnu_param): For parameters passed by
	reference but whose type isn't by-ref and whose mechanism hasn't been
	forced to by-ref, set the DECL_RESTRICTED_ALIASING_P flag directly on
	them instead of changing their type.
	* gcc-interface/trans.c (scan_rhs_r): New helper function.
	(independent_iterations_p): New predicate.
	(Loop_Statement_to_gnu): For a loop with an iteration scheme, set an
	ivdep pragma if the iterations are independent.

From-SVN: r228377
2015-10-02 09:18:34 +00:00
Louis Krupp
7262aee978 Delete undesirable svn:executable property
From-SVN: r228376
2015-10-02 08:41:13 +00:00
Kyrylo Tkachov
6b7e867187 [RTL ifcvt] PR 67786, 67787: Check that intermediate instructions in the basic block don't clobber a reg used in condition
PR rtl-optimization/67786
        PR rtl-optimization/67787
        * ifcvt.c (bb_valid_for_noce_process_p): Reject basic block if
        it modifies a reg used in the condition calculation.

        * gcc.dg/pr67786.c: New test.
        * gcc.dg/pr67787.c: Likewise.

From-SVN: r228375
2015-10-02 08:36:45 +00:00
James Greenhalgh
c0233c783d [Patch AArch64] Improve SIMD concatenation with zeroes
gcc/

	* config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Add
	alternatives for reads from memory and moves from general-purpose
	registers.
	(*aarch64_combinez_be<mode>): Likewise.

gcc/testsuite/

	* gcc.target/aarch64/vect_combine_zeroes_1.c: New.

From-SVN: r228374
2015-10-02 08:32:12 +00:00
Eric Botcazou
547bbe4977 trans.c (find_loop_for): Use FOR_EACH_VEC_ELT_REVERSE.
* gcc-interface/trans.c (find_loop_for): Use FOR_EACH_VEC_ELT_REVERSE.
	(Loop_Statement_to_gnu): Use FOR_EACH_VEC_ELT.
	(finalize_nrv): Use FOR_EACH_VEC_SAFE_ELT and initialize field.
	(build_stmt_group): Add blank lines.

From-SVN: r228373
2015-10-02 08:10:46 +00:00
Kai Tietz
a87926c15d re PR target/51726 (LTO and attribute 'selectany')
PR target/51726
        * g++.dg/ext/selectany2.C: Allow uninitialized variable case.

From-SVN: r228371
2015-10-02 10:08:38 +02:00
Kai Tietz
63578ef993 re PR target/51726 (LTO and attribute 'selectany')
PR target/51726
	* config/i386/winnt.c (ix86_handle_selectany_attribute): Handle
	selectany within this function without need to keep attribute.
	(i386_pe_encode_section_info): Remove selectany-code.

From-SVN: r228370
2015-10-02 10:06:52 +02:00
Richard Biener
6a8b77b2fa tree-ssa-sccvn.c (has_VN_INFO): New function.
2015-10-02  Richard Biener  <rguenther@suse.de>

	* tree-ssa-sccvn.c (has_VN_INFO): New function.
	(free_scc_vn): Use it.
	(visit_use): Remove dead code and refactor to use gassign
	and use less indentation.

From-SVN: r228369
2015-10-02 07:34:53 +00:00
Louis Krupp
d751beac55 [multiple changes]
2015-10-01  Louis Krupp <louis.krupp@zoho.com>

	PR fortran/62242
	PR fortran/52332
	* trans-array.c
	(store_backend_decl): Create new gfc_charlen instance if requested
	(get_array_ctor_all_strlen): Call store_backend_decl requesting
	new gfc_charlen
	(trans_array_constructor): Call store_backend_decl requesting
	new gfc_charlen if get_array_ctor_strlen was called
	(gfc_add_loop_ss_code): Don't try to convert non-constant length

2015-10-01  Louis Krupp     <louis.krupp@zoho.com>

	PR fortran/62242
	PR fortran/52332
	* gfortran.dg/string_array_constructor_1.f90: New.
	* gfortran.dg/string_array_constructor_2.f90: New.
	* gfortran.dg/string_array_constructor_3.f90: New.

From-SVN: r228368
2015-10-02 04:03:34 +00:00
Louis Krupp
5a4d7a169f Approved by FX
From-SVN: r228367
2015-10-02 01:54:37 +00:00
Segher Boessenkool
636172b5be rs6000: Add "cannot_copy" attribute, use it (PR67788, PR67789)
After the shrink-wrapping patches the prologue will often be pushed
"deeper" into the function, which in turn means the software trace cache
pass will more often want to duplicate the basic block containing the
prologue.  This caused failures for 32-bit SVR4 with -msecure-plt PIC.

This configuration uses the load_toc_v4_PIC_1 instruction, which creates
assembler labels without using the normal machinery for that.  If now
the compiler decides to duplicate the insn, it will emit the same label
twice.  Boom.

It isn't so easy to fix this to use labels the compiler knows about (let
alone test that properly).  Instead, this patch wires up a "cannot_copy"
attribute to be used by TARGET_CANNOT_COPY_P, and sets that attribute on
these insns we do not want copied.


2015-10-01  Segher Boessenkool  <segher@kernel.crashing.org>

	PR target/67788
	PR target/67789
	* config/rs6000/rs6000.c (TARGET_CANNOT_COPY_INSN_P): New.
	(rs6000_cannot_copy_insn_p): New function.
	* config/rs6000/rs6000.md (cannot_copy): New attribute.
	(load_toc_v4_PIC_1_normal): Set cannot_copy.
	(load_toc_v4_PIC_1_476): Ditto.

gcc/testsuite/
	PR target/67788
	PR target/67789
	* gcc.target/powerpc/pr67789.c: New testcase.

From-SVN: r228366
2015-10-02 03:29:26 +02:00
Steven G. Kargl
d30ecc9c2b PR fortran.67802
2015-10-01  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran.67802
	* decl.c (add_init_expr_to_sym): Numeric constant for character
	length must be an INTEGER.

2015-10-01  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran.67802
	* gfortran.dg/pr67802.f90: New test.

From-SVN: r228365
2015-10-02 00:53:00 +00:00
Steven G. Kargl
220ab6b433 re PR fortran/66979 (gfortran internal compiler error with malformed FLUSH statement)
2015-10-01  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66979
	* io.c (gfc_resolve_filepos): Check for a UNIT number.  Add a nearby
	missing 'return false'.

2015-10-01  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/66979
	gfortran.dg/pr66979.f90: new test.

From-SVN: r228364
2015-10-02 00:49:28 +00:00
Steven G. Kargl
b64c3d0696 re PR fortran/67616 (ICE on data initialization of type variable in block)
2015-10-01  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/67616
	* primary.c (gfc_match_structure_constructor): Use a possibly
	host-associated symtree to prevent ICE.

2015-10-01  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/67616
	* gfortran.dg/pr67616.f90: New test.

From-SVN: r228363
2015-10-02 00:45:59 +00:00
GCC Administrator
88a2711ce9 Daily bump.
From-SVN: r228362
2015-10-02 00:16:15 +00:00
Aditya Kumar
0afd32be3c use sese_l throughout scop-detection
Use sese_l throughout SCoP detection and create vec<scop_p> at the very end when
all SCoPs have been identified. 'struct sese_l' is very lightweight (two
pointers) compared to 'struct scop'.

No functional change intended. Passes regtest and bootstrap.

gcc/ChangeLog:

2015-10-01  Aditya Kumar  <hiraditya@msn.com>

        * graphite-scop-detection.c (struct sese_l): New conversion constructor
          so that this type can be pushed into a vec.
        (class scop_builder): use sese_l to collect scops.
        (get_scops): New getter function.
        (remove_intersecting_scops): Use sese_l instead of scops_p.
        (intersects): Same.
        (add_scop): Same.
        (subsumes): Same.
        (remove_subscops): Same.
        (build_scops): Add scops to vec<scops_p> once all the scops have been
        detected.

From-SVN: r228359
2015-10-01 22:04:20 +00:00
Aditya Kumar
65ef70d695 Rename gimple_bb to gimple_poly_bb
Renaming gimple_bb to gimple_poly_bb because there is a function gimple_bb
by the same name in gimple.h. No functional change intended.
Passes regtest and bootstrap.

gcc/ChangeLog:

2015-10-01  Aditya Kumar  <hiraditya@msn.com>

        * graphite-isl-ast-to-gimple.c (class translate_isl_ast_to_gimple):
	Renamed type from gimple_bb_p to gimple_poly_bb_p.
        (translate_isl_ast_node_user): Same.
        * graphite-poly.c (new_poly_bb): Same.
        * graphite-poly.h (gbb_from_bb): Same.
        * sese.h: Same.
        * graphite-sese-to-poly.c (new_gimple_bb): gimple_bb_p -> gimple_poly_bb_p
        (build_scop_scattering): Same.
        (find_params_in_bb): Same.
        (add_conditions_to_domain): Same.
        (sese_dom_walker::before_dom_children): Same.
        (analyze_drs_in_stmts): Same.
        (new_pbb_from_pbb): Same.
        (free_data_refs_aux): New pointer to type base_alias_pair.
        * graphite-sese-to-poly.h: Same.
        * sese.c (if_region_set_false_region): Fixed Indentation.
        (move_sese_in_condition): Same.

From-SVN: r228358
2015-10-01 22:04:14 +00:00
Sebastian Pop
6652875ffe correctly handle non affine data references
2015-10-01  Sebastian Pop  <s.pop@samsung.com>
            Aditya Kumar  <aditya.k7@samsung.com>
        PR tree-optimization/66980
        * graphite-scop-detection.c (stmt_has_simple_data_refs_p): Return false
        when data reference analysis has failed.

Co-Authored-By: Aditya Kumar <aditya.k7@samsung.com>

From-SVN: r228357
2015-10-01 22:04:07 +00:00
Ville Voutilainen
55fec44def re PR c++/54430 ([C++11] For-Loop: Scope of iterating variable begins too early)
PR c++/54430

/cp
2015-10-01  Ville Voutilainen  <ville.voutilainen@gmail.com>

	PR c++/54430
	* name-lookup.c (push_binding): Make non-static.
	* name-lookup.h (push_binding): Declare it.
	* parser.c (cp_parser_range_for): Use it, get the range
	declaration away from the scope until the range expression
	has been parsed, then restore the declaration.

/testsuite
2015-10-01  Ville Voutilainen  <ville.voutilainen@gmail.com>

	PR c++/54430
	* g++.dg/cpp0x/range-for30.C: New.

From-SVN: r228354
2015-10-01 22:22:08 +03:00
Joseph Myers
0d1a8f7517 Do not describe -std=c11 etc. as experimental in c.opt help text.
I noticed that c.opt still described -std=c11 and related options as
experimental in the --help text.  This patch fixes this.

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

	* c.opt (std=c11): Do not describe as experimental.
	(std=gnu11): Likewise.
	(std=iso9899:2011): Likewise.

From-SVN: r228349
2015-10-01 18:00:14 +01:00
Jonathan Wakely
7b8089a3c6 * doc/html/manual/errno.html: Add new file.
From-SVN: r228348
2015-10-01 17:02:54 +01:00
Sebastian Pop
95ad241797 call scev analysis in scop-detection as in sese-to-poly
Before our rewrite of the scop detection, we used to not have a valid SESE
region under hand, and so we used to do more ad-hoc analysis of data references
by trying to prove that at all levels of a loop nest the data references would
be still valid.

Now that we have a valid SESE region, we can call the scev analysis in the same
way on the same computed loop nest in the scop-detection as in the sese-to-poly.

Next step will be to cache the data references analyzed in the scop detection
and not compute the same info in sese-to-poly.

The patch fixes block-1.f90 that used to ICE on x86_64-linux when compiled with
-m32.  Patch passed bootstrap with BOOT_CFLAGS="-g -O2 -fgraphite-identity
-floop-nest-optimize" and check on x86_64-linux using ISL-0.15.

2015-09-28  Sebastian Pop  <s.pop@samsung.com>
	Aditya Kumar  <aditya.k7@samsung.com>

	PR tree-optimization/67754
	* graphite-scop-detection.c (stmt_has_simple_data_refs_p): Call
	scev analysis on the same loop nest as analyze_drs_in_stmts.
	* graphite-sese-to-poly.c (outermost_loop_in_sese_1): Moved and renamed...
	(try_generate_gimple_bb): Call outermost_loop_in_sese.
	(analyze_drs_in_stmts): Same.
	* sese.c (outermost_loop_in_sese): ...here.

Co-Authored-By: Aditya Kumar <aditya.k7@samsung.com>

From-SVN: r228347
2015-10-01 15:17:58 +00:00
Sebastian Pop
cf72400ff3 add recursion on the inner loops
We now check that all data references in the current loop and inner loops
contained within loop are valid in an outer region before declaring that the
outer loop is a valid scop.

2015-09-30  Sebastian Pop  <s.pop@samsung.com>
	    Aditya Kumar  <aditya.k7@samsung.com>

	PR tree-optimization/67754
	* graphite-scop-detection.c (loop_body_is_valid_scop): Add missing
	recursion on the inner loops.

Co-Authored-By: Aditya Kumar <aditya.k7@samsung.com>

From-SVN: r228346
2015-10-01 15:17:51 +00:00
Trevor Saunders
526ceb6836 remove many typedefs
gcc/ChangeLog:

2015-10-01  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* cfganal.c, compare-elim.c, coverage.c, cprop.c, df-scan.c,
	function.c, read-rtl.c, statistics.c, trans-mem.c, tree-if-conv.c,
	tree-into-ssa.c, tree-loop-distribution.c, tree-ssa-coalesce.c,
	tree-ssa-loop-ivopts.c, tree-ssa-reassoc.c, tree-ssa-strlen.c,
	tree-ssa-tail-merge.c, tree-vrp.c, var-tracking.c: Remove
unneeded typedefs.

From-SVN: r228344
2015-10-01 15:12:31 +00:00
Marek Polacek
f6f69fb09c re PR c/65345 (ICE with _Generic selection on _Atomic int)
PR c/65345
	* config/i386/i386.c (ix86_atomic_assign_expand_fenv): Adjust to use
	create_tmp_var_raw rather than create_tmp_var.

	* gcc.dg/atomic/pr65345-4.c: New test.
	* gcc.dg/pr65345-3.c: New test.

From-SVN: r228343
2015-10-01 14:53:10 +00:00
Ian Lance Taylor
209919e2fd re PR go/66870 (split stack issues on ppc64le and ppc64)
PR go/66870
	* gospec.c (lang_specific_driver): Only look for OPT_m32 if
	TARGET_CAN_SPLIT_STACK_64BIT is defined.

From-SVN: r228342
2015-10-01 14:43:57 +00:00
Marek Polacek
9edaabf3d2 re PR tree-optimization/67769 (VRP pass does wrong optimization)
PR tree-optimization/67769
	* tree-ssa-phiopt.c (conditional_replacement): Call
	reset_flow_sensitive_info_in_bb.
	(minmax_replacement): Likewise.
	(abs_replacement): Likewise.

	* gcc.dg/torture/pr67769.c: New test.

From-SVN: r228341
2015-10-01 14:25:42 +00:00
Nathan Sidwell
4812613802 builtins.c: Don't include gomp-constants.h.
* builtins.c: Don't include gomp-constants.h.
	(fold_builtin_1): Don't fold acc_on_device here.
	* gimple-fold.c: Include gomp-constants.h.
	(gimple_fold_builtin_acc_on_device): New.
	(gimple_fold_builtin): Call it.

From-SVN: r228340
2015-10-01 14:13:30 +00:00
H.J. Lu
d878e79bf8 Enable bt and and movzx for Lakemont
* config/i386/x86-tune.def (X86_TUNE_USE_BT): Enable for
	Lakemont.
	(X86_TUNE_ZERO_EXTEND_WITH_AND): Disable for Lakemont.

From-SVN: r228337
2015-10-01 06:34:49 -07:00
Uros Bizjak
91470073d6 pr55113_0.c: Skip on all x86 targets.
* gcc.dg/lto/pr55113_0.c: Skip on all x86 targets.

From-SVN: r228334
2015-10-01 14:46:19 +02:00
Oleg Endo
7e623de550 Fix typo in ChangeLog.
From-SVN: r228333
2015-10-01 12:38:28 +00:00
Oleg Endo
298b0f3f70 re PR target/54236 ([SH] Improve addc and subc insn utilization)
gcc/testsuite/
	PR target/54236
	* gcc.target/sh/pr54236-6.c: Fix assembler-no string.

From-SVN: r228332
2015-10-01 12:36:15 +00:00
Jonathan Wakely
f14decafae Save-and-restore errno more carefully in libstdc++
* doc/xml/manual/diagnostics.xml: Document use of errno.
	* doc/html/*: Regenerate.
	* config/locale/generic/c_locale.cc (_Save_errno): New helper.
	(__convert_to_v): Use _Save_errno.
	* include/ext/string_conversions.h (__stoa): Only restore errno when
	it isn't set to non-zero.

From-SVN: r228328
2015-10-01 12:23:39 +01:00
Marek Polacek
aabef2de2f * c-typeck.c (convert_for_assignment): Improve commentary.
From-SVN: r228327
2015-10-01 10:14:39 +00:00
Uros Bizjak
228ae4702c pr65105-1.c: Require sse2 effective target.
* gcc.target/i386/pr65105-1.c: Require sse2 effective target.
	(main): Rename to sse2_test.  Abort if count != 5.
	(dg-options): Add -save-temps.  Use "-msse2 -mtune=slm" instead
	of -march=slm.
	* gcc.target/i386/pr46865-2.c (dg-options): Remove -save-temps.

From-SVN: r228326
2015-10-01 12:06:27 +02:00
James Greenhalgh
295bdf5c3b [ChangeLog] Fix typo in 228324.
s/Liekwise/Likewise/

From-SVN: r228325
2015-10-01 09:36:01 +00:00
James Greenhalgh
cdc1afa3c0 [Patch 2/2 ARM/AArch64] Add a new Cortex-A53 scheduling model
* config/arm/aarch-common-protos.h
	(aarch_accumulator_forwarding): New.
	(aarch_forward_to_shift_is_not_shifted_reg): Likewise.
	* config/arm/aarch-common.c (aarch_accumulator_forwarding): New.
	(aarch_forward_to_shift_is_not_shifted_reg): Liekwise.
	* config/arm/cortex-a53.md: Rewrite.

From-SVN: r228324
2015-10-01 09:33:40 +00:00
Richard Biener
34050b6bee gimple-match.h (mprts_hook): Declare.
2015-10-01  Richard Biener  <rguenther@suse.de>

	* gimple-match.h (mprts_hook): Declare.
	* gimple-match.head.c (mprts_hook): Define.
	(maybe_push_res_to_seq): Use new hook.
	* gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
	* tree-ssa-sccvn.h (vn_ssa_aux::expr): Change to a gimple_seq.
	(vn_ssa_aux::has_constants): Remove.
	* tree-ssa-sccvn.c: Include gimple-match.h.
	(VN_INFO_GET): Assert we don't re-use SSA names.
	(vn_get_expr_for): Remove.
	(expr_has_constants): Likewise.
	(stmt_has_constants): Likewise.
	(simplify_binary_expression): Likewise.
	(simplify_unary_expression): Likewise.
	(vn_lookup_simplify_result): New hook.
	(visit_copy): Adjust.
	(visit_reference_op_call): Likewise.
	(visit_phi): Likewise.
	(visit_use): Likewise.
	(process_scc): Likewise.
	(init_scc_vn): Likewise.
	(visit_reference_op_load): Likewise.  Use match-and-simplify and
	a gimple seq for inserted expressions.
	(try_to_simplify): Remove GENERIC stmt combining code.
	(sccvn_dom_walker::before_dom_children): Use match-and-simplify.
	* tree-ssa-pre.c (eliminate_insert): Adjust.
	(eliminate_dom_walker::before_dom_children): Likewise.

	* gcc.dg/tree-ssa/ssa-fre-7.c: Adjust.
	* gcc.dg/tree-ssa/ssa-fre-8.c: Likewise.

From-SVN: r228320
2015-10-01 07:54:26 +00:00
Segher Boessenkool
e01c66ca30 bb-reorder: Documentation updates
2015-09-23   Segher Boessenkool  <segher@kernel.crashing.org>

	* doc/invoke.texi (Optimization Options): Add
	-freorder-blocks-algorithm=.
	(Optimize Options) <-O>: Add -freorder-blocks.
	<-O2>: Remove -freorder-blocks.  Add -freorder-blocks-algorithm=stc.
	<-Os>: Add -freorder-blocks-algorithm=stc as not enabled.
	<-freorder-blocks>: Also enabled at levels -O and -Os.
	<-freorder-blocks-algorithm=>: Document new option.

From-SVN: r228319
2015-10-01 08:40:01 +02:00
Segher Boessenkool
59faab7cc4 bb-reorder: Add -freorder-blocks-algorithm= and wire it up
This adds an -freorder-blocks-algorithm=[simple|stc] flag, with "simple"
as default.  For -O2 and up (except -Os) it is switched to "stc" instead.
Targets that never want STC can override this.  This changes -freorder-blocks
to be on at -O1 and up (was -O2 and up).

In effect, the changes are for -O1 (which now gets "simple" instead of
nothing), -Os (which now gets "simple" instead of "stc", since STC results
in much bigger code), and for targets that wish to never use STC (not in
this patch though).


2015-09-23   Segher Boessenkool  <segher@kernel.crashing.org>

	* bb-reorder.c (reorder_basic_blocks): Use the algorithm selected
	with flag_reorder_blocks_algorithm.
	* common.opt (freorder-blocks-algorithm=): New flag.
	(reorder_blocks_algorithm): New enum.
	* flag-types.h (reorder_blocks_algorithm): New enum.
	* opts.c (default_options_table): Use -freorder-blocks at -O1 and up,
	and -freorder-blocks-algorithm=stc at -O2 and up (not at -Os).

From-SVN: r228318
2015-10-01 08:38:24 +02:00