Commit Graph

140789 Commits

Author SHA1 Message Date
Max Filippov c8338173d7 xtensa: fix xtensa_fallback_frame_state for call0 ABI
2015-09-15  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
	* config/xtensa/xtensa.h (DWARF_ALT_FRAME_RETURN_COLUMN): New
	definition.
	(DWARF_FRAME_REGISTERS): Reserve space for one extra register in
	call0 ABI.

libgcc/
	* config/xtensa/linux-unwind.h (xtensa_fallback_frame_state):
	Add support for call0 ABI.

From-SVN: r227809
2015-09-15 19:30:32 +00:00
Max Filippov e1b8828bc8 xtensa: fix TLS calls for call0 ABI
2015-09-15  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
	* config/xtensa/xtensa.c (xtensa_call_tls_desc): Use a10 or a2
	to pass TLS call argument, according to current ABI.
	* config/xtensa/xtensa.md (tls_call pattern): Use callx8 or
	callx0 for TLS call, according to current ABI.

From-SVN: r227808
2015-09-15 19:24:26 +00:00
Eric Botcazou cc6fbd8040 tree-eh.c (lower_try_finally_dup_block): Clear location information on stack restore statements.
* tree-eh.c (lower_try_finally_dup_block): Clear location information
	on stack restore statements.
	(decide_copy_try_finally): Do not consider a stack restore statement as
	coming from sources.

From-SVN: r227805
2015-09-15 17:57:49 +00:00
Uros Bizjak 10d48e7cd9 alpha.c (alpha_expand_block_clear): Use HOST_WIDE_INT_M1U instead of ~(HOST_WIDE_INT)0 when shifting.
* config/alpha/alpha.c (alpha_expand_block_clear): Use
	HOST_WIDE_INT_M1U instead of ~(HOST_WIDE_INT)0 when shifting.

From-SVN: r227804
2015-09-15 19:50:15 +02:00
Marek Polacek 0e36f5c7c1 re PR c/67580 (Improve error message on missing "struct" tag)
PR c/67580
	* c-decl.c (tag_exists_p): New function.
	* c-parser.c (c_parser_declaration_or_fndef): Give a hint when
	struct/union/enum keywords are missing.
	* c-tree.h (tag_exists_p): Declare.

	* gcc.dg/pr67580.c: New test.

From-SVN: r227803
2015-09-15 17:19:11 +00:00
Ian Lance Taylor c33c18cdc6 libgo: test linking split-stack and non-split-stack together
PPC has split-stack support in current GCC, but old version of gold will
    reject attempts to link PPC split-stack and non-split-stack code
    together.  Test for that, and don't compile the C code with
    -fsplit-stack if it doesn't work.
    
    Reviewed-on: https://go-review.googlesource.com/14594

From-SVN: r227802
2015-09-15 17:05:14 +00:00
Jeff Law 10e0393ceb [PATCH] More class-ification of DOM
PR tree-optimization/47679
	* tree-ssa-dom.c (expr_hash_elt): Now a class with ctors/dtors,
	methods and private members.
	(avail_exprs_stack): Similarly.  Change type of global
	from a pair of expr_hash_elt_t to the new class.
	(expr_elt_hasher::hash): Corresponding changes.
	(expr_elt_hasher::equal): Similarly.
	(avail_expr_hash): Similarly.
	(pass_dominator::execute): Similarly.
	(dom_opt_dom_walker::thread_across_edge): Similarly.
	(record_cond): Similarly.
	(dom_opt_dom_walker::before_dom_children): Similarly.
	(dom_opt_dom_walker::after_dom_children): Similarly.
	(lookup_avail_expr): Likewise.
	(initialize_hash_element): Now a expr_hash_elt constructor.
	(initialize_hash_element_from_expr): Similarly.
	(free_expr_hash_elt_contents): Now a dtor for class expr_hash_elt.
	(free_expr_hash_elt): Call dtor for the element.
	(remove_local_expressions_from_table): Now the "pop_to_marker"
	method in the available_exprs_stack class.
	(avail_expr_stack::record_expr): Method factored out.
	(print_expr_hash_elt): Now a method in the expr_hash_elt class.
	Fix formatting.
	(hashable_expr_equal_p): Fix formatting.

From-SVN: r227801
2015-09-15 11:03:49 -06:00
David Malcolm 31bdd08a9d Change of location_get_source_line signature
gcc/ChangeLog:
	* input.h (location_get_source_line): Drop "expanded_location"
	param in favor of a file and line number.
	* input.c (location_get_source_line): Likewise.
	(dump_location_info): Update for change in signature of
	location_get_source_line.
	* diagnostic.c (diagnostic_print_caret_line): Likewise.

gcc/c-family/ChangeLog:
	* c-format.c (location_from_offset): Update for change in
	signature of location_get_source_line.
	* c-indentation.c (get_visual_column): Likewise.
	(line_contains_hash_if): Likewise.

From-SVN: r227800
2015-09-15 16:53:01 +00:00
Eric Botcazou c55721c0df defaults.h (STACK_OLD_CHECK_PROTECT): Adjust for -fno-exceptions.
* defaults.h (STACK_OLD_CHECK_PROTECT): Adjust for -fno-exceptions.
	Bump to 4KB for SJLJ exceptions.
	(STACK_CHECK_PROTECT): Likewise.  Bump to 8KB for SJLJ exceptions.
	* doc/tm.texi.in (STACK_CHECK_PROTECT): Adjust.
	* doc/tm.texi: Regenerate.

From-SVN: r227799
2015-09-15 16:25:59 +00:00
Kyrylo Tkachov 78dc36f80a [ARM] Fix arm bootstrap failure due to -Werror=shift-negative-value
* config/arm/arm.c (arm_gen_constant): Use HOST_WIDE_INT_M1U instead
	of -1 when shifting.  Change type of val to unsigned HOST_WIDE_INT.
	Update prototype.

From-SVN: r227798
2015-09-15 15:03:23 +00:00
Richard Biener 4f912f91a0 re PR tree-optimization/67470 (ICE at -O3 on x86_64-linux-gnu in compute_live_loop_exits, at tree-ssa-loop-manip.c:235)
2015-09-15  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/67470
	* tree-ssa-loop-im.c (execute_sm_if_changed): Preserve PHI
	structure for PHI hoisting by inserting a forwarder block
	if appropriate.

	* gcc.dg/torture/pr67470.c: New testcase.

From-SVN: r227797
2015-09-15 14:10:10 +00:00
Christian Bruel 20adfc6c1c arm.c (TARGET_OPTION_PRINT): Define.
2015-09-15  Christian Bruel  <christian.bruel@st.com>

	* config/arm/arm.c (TARGET_OPTION_PRINT): Define.
	(arm_option_print): New function.

From-SVN: r227796
2015-09-15 15:46:57 +02:00
Christian Bruel c8b6aa7c12 re PR target/52144 (ARM should support arm/thumb function attribute to permit different instruction sets in the same source)
2015-09-15  Christian Bruel  <christian.bruel@st.com>

	PR target/52144
	* config/arm/arm.c (arm_option_params_internal): Remove opts parameter.
	* config/arm/arm-c.c (arm_cpu_builtins): Declare static.
	Remove flags parameter.
	* config/arm/arm.h (TARGET_32BIT_P, TARGET_ARM_QBIT_P)
	(TARGET_ARM_SAT_P, TARGET_IDIV_P, TARGET_HAVE_LDREX_P)
	(TARGET_HAVE_LDREXBH_P, TARGET_HAVE_LDREXD_P, TARGET_DSP_MULTIPLY_P)
	(TARGET_ARM_FEATURE_LDREX_P, TARGET_INT_SIMD_P): Redefine macros with...
	(TARGET_ARM_SAT, TARGET_IDIV, TARGET_HAVE_LDREX)
	(TARGET_HAVE_LDREXBH, TARGET_HAVE_LDREXD, TARGET_ARM_FEATURE_LDREX)
	(TARGET_DSP_MULTIPLY, TARGET_INT_SIMD): Redefined macros.
	* gcc/config/arm/arm-protos.h (arm_cpu_builtins): Remove declaration.

From-SVN: r227795
2015-09-15 15:43:17 +02:00
Alan Lawrence 635e66fec3 [AArch64 array_mode 8/8] Add d-registers to TARGET_ARRAY_MODE_SUPPORTED_P
gcc/:

	* config/aarch64/aarch64.h (AARCH64_VALID_SIMD_DREG_MODE): New.

	* config/aarch64/aarch64.c (aarch64_array_mode_supported_p): Add
	AARCH64_VALID_SIMD_DREG_MODE.

gcc/testsuite/:

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

From-SVN: r227794
2015-09-15 13:16:58 +00:00
Alan Lawrence 97755701af [AArch64 array_mode 7/8] Combine the expanders using VSTRUCT:nregs
* config/aarch64/aarch64-simd.md (aarch64_ld2r<mode>,
	aarch64_ld3r<mode>, aarch64_ld4r<mode>): Combine together, making...
	(aarch64_simd_ld<VSTRUCT:nregs>r<VALLDIF:mode>): ...this.
	(aarch64_ld2_lane<mode>, aarch64_ld3_lane<mode>,
	aarch64_ld4_lane<mode>): Combine together, making...
	(aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): ...this.
	(aarch64_st2_lane<mode>, aarch64_st3_lane<mode>,
	aarch64_st4_lane<mode>): Combine together, making...
	(aarch64_st<VSTRUCT:nregs>_lane<VALLDIF:mode>): ...this.
	* config/aarch64/iterators.md (nregs): Add comment.

From-SVN: r227793
2015-09-15 13:09:45 +00:00
Marek Polacek 2f3bb934a1 c-decl.c (lookup_label): Return NULL_TREE instead of 0.
* c-decl.c (lookup_label): Return NULL_TREE instead of 0.
	(lookup_tag): Change the type of THISLEVEL_ONLY to bool.
	Return NULL_TREE instead of 0.
	(lookup_name): Return NULL_TREE instead of 0.
	(lookup_name_in_scope): Likewise.
	(shadow_tag_warned): Use true instead of 1 and NULL_TREE instead of 0.
	(parser_xref_tag): Use false instead of 0.
	(start_struct): Use true instead of 1.
	(start_enum): Use true instead of 1 and NULL_TREE instead of 0.

From-SVN: r227791
2015-09-15 12:48:50 +00:00
Alan Lawrence abf47511f5 [AArch64 array_mode 6/8] Remove V_TWO_ELEM, again using BLKmode + set_mem_size.
* config/aarch64/aarch64-simd.md (aarch64_simd_ld2r<mode>):
	Change operand mode from <V_TWO_ELEM> to BLK.
	(aarch64_vec_load_lanesoi_lane<mode>): Likewise.
	(aarch64_vec_store_lanesoi_lane<mode): Likewise
	(aarch64_ld2r<mode>): Generate MEM rtx with BLKmode, call set_mem_size.
	(aarch64_ld2_lane<mode>): Likewise.
	(aarch64_st2_lane<VQ:mode>): Likewise.
	* config/aarch64/iterators.md (V_TWO_ELEM): Remove.

From-SVN: r227790
2015-09-15 12:48:15 +00:00
Alan Lawrence d866f024fd [AArch64 array_mode 5/8] Remove V_FOUR_ELEM, again using BLKmode + set_mem_size.
* config/aarch64/aarch64-simd.md (aarch64_simd_ld4r<mode>):
	Change operand mode from <V_FOUR_ELEM> to BLK.
	(aarch64_vec_load_lanesxi_lane<mode>): Likewise.
	(aarch64_vec_store_lanesxi_lane<mode): Likewise.
	(aarch64_ld4r<mode>): Generate MEM rtx with BLKmode, call set_mem_size.
	(aarch64_ld4_lane<mode>): Likewise.
	(aarch64_st4_lane<mode>): Likewise.
	* config/aarch64/iterators.md (V_FOUR_ELEM): Remove.

From-SVN: r227789
2015-09-15 12:43:07 +00:00
Richard Biener f6b4dc28f9 re PR middle-end/67563 (verify_flow_info failed)
2015-09-15  Richard Biener  <rguenther@suse.de>

	PR middle-end/67563
	* gimple-fold.c (gimplify_and_update_call_from_tree): Do not
	transfer EH info from old to new stmt.
	(replace_call_with_value): Likewise.
	(replace_call_with_call_and_fold): Likewise.
	(gimple_fold_builtin_memory_op): Likewise.
	(gimple_fold_builtin_memset): Likewise.
	(gimple_fold_builtin_stpcpy): Likewise.
	(gimple_fold_call): Likewise.

	* gcc.dg/pr67563.c: New testcase.

From-SVN: r227788
2015-09-15 12:37:19 +00:00
Alan Lawrence 6ec0e5b9c3 [AArch64 array_mode 4/8] Remove EImode
* config/aarch64/aarch64.c (aarch64_simd_attr_length_rglist): Update
	comment.
	* config/aarch64/aarch64-builtins.c (ei_UP): Remove.
	(aarch64_simd_intEI_type_node): Likewise.
	(aarch64_simd_builtin_std_type): Remove EImode case.
	(aarch64_init_simd_builtin_types): Don't create/add intEI_type_node.
	* config/aarch64/aarch64-modes.def: Remove EImode.

From-SVN: r227787
2015-09-15 12:33:42 +00:00
Ian Lance Taylor 7e56d66864 runtime: Ignore stack sizes when deciding when to GC.
This restores https://golang.org/cl/6081043 which was lost accidentally
    when updating a new version of libgo in https://golang.org/cl/22440043 .
    
    Reviewed-on: https://go-review.googlesource.com/14569

From-SVN: r227784
2015-09-15 12:32:31 +00:00
Alan Lawrence f4720b94c4 [AArch64 array_mode 3/8] Stop using EImode in aarch64-simd.md and iterators.md
* config/aarch64/aarch64-simd.md (aarch64_simd_ld3r<mode>):
	Change operand mode from <V_THREE_ELEM> to BLK.
	(aarch64_vec_load_lanesci_lane<mode>): Likewise.
	(aarch64_vec_store_lanesci_lane<mode>): Likewise.
	(aarch64_ld3r<mode>): Generate MEM rtx with BLKmode, call set_mem_size.
	(aarch64_ld3_lane<mode>): Likewise.
	(aarch64_st3_lane<mode>): Likewise.
	* config/aarch64/iterators.md (V_THREE_ELEM): Remove.

From-SVN: r227783
2015-09-15 12:28:20 +00:00
Alan Lawrence 6960bf558f [AArch64 array_mode 2/8] Remove VSTRUCT_DREG, use BLKmode for d-reg aarch64_st/ld expands
* config/aarch64/aarch64-simd.md
	(aarch64_ld2<mode>_dreg VD & DX, aarch64_st2<mode>_dreg VD & DX ):
	Change all TImode operands to BLKmode.
	(aarch64_ld3<mode>_dreg VD & DX, aarch64_st3<mode>_dreg VD & DX):
	Change all EImode operands to BLKmode.
	(aarch64_ld4<mode>_dreg VD & DX, aarch64_st4<mode>_dreg VD & DX):
	Change all OImode operands to BLKmode.

	(aarch64_ld<VSTRUCT:nregs><VDC:mode>): Generate MEM rtx with BLKmode
	and call set_mem_size.
	(aarch64_st<VSTRUCT:nregs><VDC:mode>): Likewise

	* config/aarch64/iterators.md (VSTRUCT_DREG): Remove.

From-SVN: r227782
2015-09-15 12:11:27 +00:00
Alan Lawrence d30ab8e0b7 [AArch64 array_mode 1/8] Rename vec_store_lanes<mode>_lane to aarch64_vec_store_lanes<mode>_lane
* config/aarch64/aarch64-simd.md (vec_store_lanesoi_lane<mode>): Rename
	to...
	(aarch64_vec_store_lanesoi_lane<mode>): ...this.

	(vec_store_lanesci_lane<mode>): Rename to...
	(aarch64_vec_store_lanesci_lane<mode>): ...this.

	(vec_store_lanesxi_lane<mode>): Rename to...
	(aarch64_vec_store_lanesxi_lane<mode>): ...this.

	(aarch64_st2_lane<mode>, aarch64_st3_lane<mode>,
	aarch64_st4_lane<mode>): Follow renaming.

From-SVN: r227781
2015-09-15 11:39:12 +00:00
Andreas Krebbel ceab0d1618 S/390: Add missing brackets.
gcc/ChangeLog:

2015-09-15  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390.c (s390_const_operand_ok): Add missing
	brackets.

From-SVN: r227780
2015-09-15 11:07:16 +00:00
Richard Biener a9dfad6dff re PR lto/67568 (lto-streamer-in.c sanitizer runtime error: load of value 255, which is not a valid value for type 'bool')
2015-09-15  Richard Biener  <rguenther@suse.de>

	PR lto/67568
	* lto-streamer.h (lto_location_cache::current_sysp): Properly
	initialize.
	* lto-streamer-out.c (clear_line_info): Likewise.

From-SVN: r227779
2015-09-15 08:00:30 +00:00
Richard Biener 07a4fb4bbf match-and-simplify.texi: Fix wording.
2015-09-15  Richard Biener  <rguenther@suse.de>

	* doc/match-and-simplify.texi: Fix wording.

From-SVN: r227778
2015-09-15 07:33:15 +00:00
Ian Lance Taylor 44c925bdb0 libgo: don't provide ustat on arm64 GNU/Linux
This avoids linker warnings when linking against glibc, as apparently
    arm64 GNU/Linux does not support the ustat system call.
    
    Also update to automake 1.11.6, as that is the new GCC standard.
    
    Reviewed-on: https://go-review.googlesource.com/14567

From-SVN: r227777
2015-09-15 03:43:01 +00:00
Bin Cheng f468efc59b tree-ssa-loop-ivopts.c (get_shiftadd_cost): Strip unnecessary type conversion in op1.
* tree-ssa-loop-ivopts.c (get_shiftadd_cost): Strip
	unnecessary type conversion in op1.

From-SVN: r227776
2015-09-15 02:12:47 +00:00
Segher Boessenkool 23997c53b8 shrink-wrap: Rewrite
This patch rewrites the shrink-wrapping algorithm, allowing non-linear
pieces of CFG to be duplicated for use without prologue instead of just
linear pieces.

	* shrink-wrap.c (requires_stack_frame_p): Fix formatting.
	(dup_block_and_redirect): Delete function.
	(can_dup_for_shrink_wrapping): New function.
	(fix_fake_fallthrough_edge): New function.
	(try_shrink_wrapping): Rewrite function.
	(convert_to_simple_return): Call fix_fake_fallthrough_edge.

From-SVN: r227775
2015-09-15 02:38:21 +02:00
Rich Felker 311adabec5 configure.ac: [SH] Fix target pattern for TLS support test so to enable more arches.
* configure.ac: [SH] Fix target pattern for TLS support test so to
enable more arches.

From-SVN: r227774
2015-09-15 00:20:14 +00:00
GCC Administrator 5ff5573112 Daily bump.
From-SVN: r227773
2015-09-15 00:16:11 +00:00
Jeff Law 55133eae28 [PATCH] Minor DOM cleanup
PR tree-optimization/47679
	* tree-ssa-dom.c (avail_expr_hash): Pass a pointer to a real
	type rather than void *.

From-SVN: r227762
2015-09-14 14:10:30 -06:00
Jason Merrill 65440c482a re PR c++/44282 (fastcall is not mangled at all)
PR c++/44282

	* mangle.c (write_CV_qualifiers_for_type): Also warn about regparm
	mangling with lower -fabi-version.

From-SVN: r227761
2015-09-14 15:54:27 -04:00
Manuel López-Ibáñez 0d179691da The flag diagnostic_context::some_warnings_are_errors controls whether to give...
The flag diagnostic_context::some_warnings_are_errors controls whether
to give the message "all warnings being treated as errors". However, when
warnings are buffered and then discarded, this flag is not reset. It turns
out we do not need this flag at all, since we already count explicitly how
many warnings were converted into errors, and this number is kept up to
date for the buffered diagnostics used by Fortran.

gcc/ChangeLog:

2015-09-14  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR fortran/67460
	* diagnostic.c (diagnostic_initialize): Do not set
	some_warnings_are_errors.
	(diagnostic_finish): Use DK_WERROR count instead.
	(diagnostic_report_diagnostic): Do not set
	some_warnings_are_errors.
	* diagnostic.h (struct diagnostic_context): Remove
	some_warnings_are_errors.

gcc/testsuite/ChangeLog:

2015-09-14  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR fortran/67460
	* gfortran.dg/pr67460.f90: New test.

From-SVN: r227760
2015-09-14 19:27:50 +00:00
Ian Lance Taylor 34e9851362 compiler: Ignore result context in constant expressions.
When evaluating a constant expression, the gofrontend would incorrectly
    force each operand to be represented as the resulting type before
    checking if the operation was valid with the untyped constants.
    According to the language specification on constant
    expressions(http://golang.org/ref/spec#Constant_expressions): "Untyped
    boolean, numeric, and string constants may be used as operands wherever
    it is legal to use an operand of boolean, numeric, or string type,
    respectively."
    
    Fixes golang/go#11566.
    
    Reviewed-on: https://go-review.googlesource.com/12716

From-SVN: r227758
2015-09-14 17:54:08 +00:00
Richard Sandiford 5c270a92a8 [SPARC] Simplify const_all_ones_operand
gen_rtx_CONST_VECTOR ensures that there is a single instance of:

       (const_vector:M [(const_int -1) ... (const_int -1)])

for each M, so pointer equality with CONSTM1_RTX is enough.  Also,
HOST_BITS_PER_WIDE_INT == 32 is doubly dead: HOST_WIDE_INT is always
64 bits now, and we always use const_int rather than const_double
or const_wide_int for all-ones values (or any other value that
fits in a signed HOST_WIDE_INT).

gcc/
	* config/sparc/predicates.md (const_all_ones_operand): Use
	CONSTM1_RTX to simplify definition.

From-SVN: r227757
2015-09-14 17:44:22 +00:00
Uros Bizjak 81fc32171d ChangeLog: Fix shitespace.
* ChangeLog: Fix shitespace.
	* testsuite/ChangeLog: Ditto.

From-SVN: r227756
2015-09-14 19:41:13 +02:00
Uros Bizjak b4e240a156 dump-new-function-3.c (dg-final): Also scan for $loopfn.
* gcc.dg/gomp/dump-new-function-3.c (dg-final): Also scan for $loopfn.
	* gcc.dg/gomp/notify-new-function-3.c (dg-final): Ditto.

From-SVN: r227755
2015-09-14 19:07:58 +02:00
Paolo Carlini 5a0f3af487 re PR c++/51911 ([C++11] G++ accepts new auto { list })
/cp
2015-09-14  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/51911
	* parser.c (cp_parser_new_expression): Enforce 5.3.4/2 (as amended
	per the spirit of DR 1467).

/testsuite
2015-09-14  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/51911
	* g++.dg/cpp0x/new-auto1.C: New.

From-SVN: r227753
2015-09-14 15:25:00 +00:00
Oleg Endo f6ba5bb293 re PR target/67061 (sh64-elf: internal compiler error: in sh_find_set_of_reg, at config/sh/sh-protos.h:235)
gcc/
	PR target/67061
	* config/sh/sh-protos.h (sh_find_set_of_reg): Simplfiy for-loop.
	Handle call insns.

From-SVN: r227750
2015-09-14 13:46:14 +00:00
Chung-Lin Tang eb472171ca lto-wrapper.c (merge_and_complain): Add OPT_fdiagnostics_show_caret...
2015-09-14  Chung-Lin Tang  <cltang@codesourcery.com>

	* lto-wrapper.c (merge_and_complain): Add OPT_fdiagnostics_show_caret,
	OPT_fdiagnostics_show_option, OPT_fdiagnostics_show_location_, and
	OPT_fshow_column to handled saved option cases.
	(append_compiler_options): Do not skip the above added options.

From-SVN: r227749
2015-09-14 13:25:36 +00:00
Ramana Radhakrishnan b4f50fd4c0 [AArch64] Handle literal pools for functions > 1 MiB in size.
This patch fixes the issue in PR63304 where we have
functions that are > 1MiB. The idea is to use adrp / ldr or adrp / add
instructions to address the literal pools under the use of a command line
option. I would like to turn this on by default on trunk but keep this
disabled by default for the release branches in order to get some
serious testing for this feature while it bakes on trunk.

As a follow-up I would like to try and see if estimate_num_insns or
something else can give us a heuristic to turn this on for "large" functions.
After all the number of incidences of this are quite low in real life,
so may be we should look to restrict this use as much as possible on the
grounds that this code generation implies an extra integer register for
addressing for every floating point and vector constant and I don't think
that's great in code that already may have high register pressure.

Tested on aarch64-none-elf with no regressions. A previous
version was bootstrapped and regression tested.

Applied to trunk.

regards
Ramana

2015-09-14  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

    	PR target/63304
    	* config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Handle
    	nopcrelative_literal_loads.
    	(aarch64_classify_address): Likewise.
    	(aarch64_constant_pool_reload_icode): Define.
    	(aarch64_secondary_reload): Handle secondary reloads for
    	literal pools.
    	(aarch64_override_options): Handle nopcrelative_literal_loads.
    	(aarch64_classify_symbol): Handle nopcrelative_literal_loads.
    	* config/aarch64/aarch64.md (aarch64_reload_movcp<GPF_TF:mode><P:mode>):
    	Define.
    	(aarch64_reload_movcp<VALL:mode><P:mode>): Likewise.
    	* config/aarch64/aarch64.opt (mpc-relative-literal-loads): New option.
    	* config/aarch64/predicates.md (aarch64_constant_pool_symref): New
    	predicate.
    	* doc/invoke.texi (mpc-relative-literal-loads): Document.

From-SVN: r227748
2015-09-14 13:16:59 +00:00
John David Anglin 641f1ab4ed re PR middle-end/67401 (Incorrect expand of __atomic_compare_exchange_8 using __sync_val_compare_and_swap_8)
PR middle-end/67401
	* optabs.c (expand_atomic_compare_and_swap): Move result of emitting
	sync_compare_and_swap_optab libcall to target_oval.

From-SVN: r227746
2015-09-14 12:05:58 +00:00
Marek Polacek aa9f4b4c73 c-opts.c (c_common_post_options): Set C++ standard earlier, before setting various warnings.
* c-opts.c (c_common_post_options): Set C++ standard earlier, before
	setting various warnings.

From-SVN: r227744
2015-09-14 10:40:51 +00:00
Marek Polacek aa256c4aed c-common.c (warn_for_sign_compare): Cast to unsigned when shifting a negative value.
* c-common.c (warn_for_sign_compare): Cast to unsigned when shifting
	a negative value.

	* c-typeck.c (set_nonincremental_init_from_string): Use
	HOST_WIDE_INT_M1U when shifting a negative value.

	* rtlanal.c (split_double): Cast to unsigned when shifting a negative
	value.
	* sched-int.h (UNKNOWN_DEP_COST): Likewise.

From-SVN: r227743
2015-09-14 10:36:50 +00:00
Mark Wielaard 0f876f2288 PR28901 -Wunused-variable ignores unused const initialised variables in C
12 years ago it was decided that -Wunused-variable shouldn't warn about
static const variables because some code used const static char rcsid[]
strings which were never used but wanted in the code anyway. But as the
bug points out this hides some real bugs. These days the usage of rcsids
is not very popular anymore. So this patch changes the default to warn
about unused static const variables in C with -Wunused-variable. And it
adds a new option -Wno-unused-const-variable to turn this warning off.
For C++ this new warning is off by default, since const variables can be
used as #defines in C++. New testcases for the new defaults in C and C++
are included testing the new warning and suppressing it with an unused
attribute or using -Wno-unused-const-variable.

gcc/ChangeLog

       PR c/28901
       * toplev.c (check_global_declaration): Check and use
       warn_unused_const_variable.
       * doc/invoke.texi (Warning Options): Add -Wunused-const-variable.
       (-Wunused-variable): Remove non-constant. For C implies
       -Wunused-const-variable.
       (-Wunused-const-variable): New.

gcc/c-family/ChangeLog

       PR c/28901
       * c.opt (Wunused-variable): Option from common.opt.
       (Wunused-const-variable): New option.

gcc/cp/ChangeLog

       PR c/28901
       * cp-objcp-common.c (cxx_warn_unused_global_decl): Remove hard-coded
       VAR_P TREE_READONLY override.

gcc/testsuite/ChangeLog

       PR c/28901
       * g++.dg/warn/unused-variable-1.C: New test.
       * g++.dg/warn/unused-variable-2.C: Likewise.
       * gcc.dg/unused-4.c: Adjust warning for static const.
       * gcc.dg/unused-variable-1.c: New test.
       * gcc.dg/unused-variable-2.c: Likewise.

From-SVN: r227742
2015-09-14 09:49:47 +00:00
Richard Biener cc099b03c0 match-and-simplify.texi: Update for changed syntax of inner ifs and the new switch expression.
2015-09-14  Richard Biener  <rguenther@suse.de>

	* doc/match-and-simplify.texi: Update for changed syntax
	of inner ifs and the new switch expression.

From-SVN: r227741
2015-09-14 09:40:17 +00:00
Yuri Rumyantsev 64106a1a20 haswell.md: New file describing Haswell pipeline.
* config/i386/haswell.md: New file describing Haswell pipeline.
	* config/i386/i386.c (processor_alias_table): Use CPU_HASWELL for
	haswell-like processors.
	(ix86_reassociation_width): Increase reassociation width for 64-bit
	Haswell processor family.
	* config/i386/i386.md: Introduce haswell cpu and include new md file.

From-SVN: r227740
2015-09-14 09:36:29 +00:00
Richard Biener 43f777061e match-and-simplify.texi: Fixup some formatting issues and document the 's' flag.
2015-09-14  Richard Biener  <rguenther@suse.de>

	* doc/match-and-simplify.texi: Fixup some formatting issues
	and document the 's' flag.

From-SVN: r227739
2015-09-14 09:25:16 +00:00