1. 29 Jun, 2015 10 commits
    • [AArch64] Generalize TLSLE macro and pattern names · 8fd17b98
      2015-06-29  Jiong Wang  <jiong.wang@arm.com>
      
      	* config/arch64/aarch64.md (UNSPEC_TLSLE): New enumeration.
      	* config/arch64/aarch64.md (tlsle_small): Rename to tlsle and use new
      	unspec name.
      	(tlsle_small_<mode>): Rename to tlsle_<mode> and use new unspec name.
      	* config/arch64/aarch64-protos.h (arch64_symbol_type): Rename
      	SYMBOL_SMALL_TPREL to SYMBOL_TLSLE.
      	(aarch64_symbol_context): Ditto.
      	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Ditto
      	and use new pattern name.
      	(aarch64_expand_mov_immediate): Ditto.
      	(aarch64_print_operand): Ditto.
      	(aarch64_classify_tls_symbol): Ditto.
      
      From-SVN: r225121
      Jiong Wang committed
    • fold-const.c (fold_binary_loc): Move X - (X / Y) * Y -> X % Y to ... · f461569a
      	* fold-const.c (fold_binary_loc): Move X - (X / Y) * Y -> X % Y to ...
      	* match.pd: ... pattern here.
      
      Co-Authored-By: Marc Glisse <marc.glisse@inria.fr>
      
      From-SVN: r225120
      Marek Polacek committed
    • Simplify structure try_transform_to_exit_first_loop_alt · fd7b3ef5
      2015-06-29  Tom de Vries  <tom@codesourcery.com>
      
      	* tree-parloops.c (try_transform_to_exit_first_loop_alt): Simplify
      	function structure.
      
      From-SVN: r225119
      Tom de Vries committed
    • invoke.texi (Aarch64 Options, -march): Split out arch and feature description... · 1f8c015b
      2015-06-29  Matthew Wahab  <matthew.wahab@arm.com>
      
      	* doc/invoke.texi (Aarch64 Options, -march): Split out arch and
      	feature description, split out the native option, add a link to
      	the feature documentation, rearrange and slightly rewrite text.
      	(Aarch64 options, -mcpu): Likewise.
      	(Aarch64 options, Feature Modifiers): Add an anchor.  Mention
      	+rdma implies Adv. SIMD.
      
      From-SVN: r225118
      Matthew Wahab committed
    • re PR c/66322 (Linus Torvalds: -Wswitch-bool produces dubious warnings, fails to… · b155cfd9
      re PR c/66322 (Linus Torvalds: -Wswitch-bool produces dubious warnings, fails to notice really bad things)
      
      	PR c/66322
      	* c-common.c (check_case_bounds): Add bool * parameter.  Set
      	OUTSIDE_RANGE_P.
      	(c_add_case_label): Add bool * parameter.  Pass it down to
      	check_case_bounds.
      	(c_do_switch_warnings): Add bool parameters.  Implement -Wswitch-bool
      	warning here.
      	* c-common.h (c_add_case_label, c_do_switch_warnings): Update
      	declarations.
      
      	* c-typeck.c (struct c_switch): Add BOOL_COND_P and OUTSIDE_RANGE_P.
      	(c_start_case): Set BOOL_COND_P and OUTSIDE_RANGE_P.  Don't warn
      	about -Wswitch-bool here.
      	(do_case): Update c_add_case_label call.
      	(c_finish_case): Update c_do_switch_warnings call.
      
      	* decl.c (struct cp_switch): Add OUTSIDE_RANGE_P.
      	(push_switch): Set OUTSIDE_RANGE_P.
      	(pop_switch): Update c_do_switch_warnings call.
      	(finish_case_label): Update c_add_case_label call.
      	* semantics.c (finish_switch_cond): Don't warn about -Wswitch-bool
      	here.
      
      	* function.c (stack_protect_epilogue): Remove a cast to int.
      	* doc/invoke.texi: Update -Wswitch-bool description.
      
      	* c-c++-common/pr60439.c: Add dg-prune-output and add switch cases.
      	* c-c++-common/pr66322.c: New test.
      	* g++.dg/eh/scope1.C: Remove dg-warning.
      
      From-SVN: r225116
      Marek Polacek committed
    • genmatch.c (add_operator): Treat ADDR_EXPR as atom. · 99e943a2
      2015-06-29  Richard Biener  <rguenther@suse.de>
      
      	* genmatch.c (add_operator): Treat ADDR_EXPR as atom.
      	* fold-const.c (fold_binary_loc): Move &A - &B simplification
      	via ptr_difference_const ...
      	* match.pd: ... here.
      	When matching (X ^ Y) == Y also match with swapped operands.
      
      From-SVN: r225115
      Richard Biener committed
    • lto-streamer.h (LTO_major_version): Bump to 5. · 2dcaddb8
      2015-06-29  Richard Biener  <rguenther@suse.de>
      
      	* lto-streamer.h (LTO_major_version): Bump to 5.
      
      From-SVN: r225113
      Richard Biener committed
    • re PR tree-optimization/66677 (ICE: in vect_transform_stmt, at tree-vect-stmts.c:7626) · d90f8440
      2015-06-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/66677
      	* tree-vect-stmts.c (vect_transform_stmt): Make assert about
      	STMT_VINFO_VEC_STMT clobbering less strict.
      
      	* gcc.dg/vect/pr66677.c: New testcase.
      
      From-SVN: r225112
      Richard Biener committed
    • Daily bump. · 04ab3d3a
      From-SVN: r225111
      GCC Administrator committed
    • re PR tree-optimization/64130 (vrp: handle non zero constant divided by range cannot be zero.) · c44b2a4f
      gcc/ChangeLog:
      
      2015-06-29  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR middle-end/64130
      	* tree-vrp.c (extract_range_from_binary_expr_1): For unsigned
      	division, compute max and min when value ranges for dividend and
      	divisor are available.
      
      
      gcc/testsuite/ChangeLog:
      
      2015-06-29  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR middle-end/64130
      	* gcc.dg/tree-ssa/pr64130.c: New test.
      
      From-SVN: r225108
      Kugan Vivekanandarajah committed
  2. 28 Jun, 2015 4 commits
  3. 27 Jun, 2015 5 commits
  4. 26 Jun, 2015 21 commits
    • gimple.c (gimple_call_set_fndecl): Remove. · 5fa9163d
      2015-06-26  Andrew MacLeod  <amacleod@redhat.com>
      
      	* gimple.c (gimple_call_set_fndecl): Remove.
      	* gimple.h (gimple_call_set_fndecl): Relocate to gimple.h and call
      	build1_loc directly instead of build_fold_addr_expr_loc.
      
      From-SVN: r225090
      Andrew MacLeod committed
    • c-common.c (check_main_parameter_types): Use VECTOR_TYPE_P or VECTOR_INTEGER_TYPE_P throughout. · 31521951
      	* c-common.c (check_main_parameter_types): Use VECTOR_TYPE_P
      	or VECTOR_INTEGER_TYPE_P throughout.
      	* c-gimplify.c: Likewise.
      
      	* c-typeck.c: Use VECTOR_TYPE_P throughout.
      
      From-SVN: r225089
      Marek Polacek committed
    • re PR c++/66216 (Defaulted Operators and constructors not working with aligned attribute) · e0ff153d
      	PR c++/66216
      	* class.c (finish_struct): Call fixup_attribute_variants.
      
      From-SVN: r225087
      Jason Merrill committed
    • re PR c++/66684 (ICE in merge_exception_specifiers, at cp/typeck2.c:2114) · 9579e906
      	PR c++/66684
      	* typeck2.c (merge_exception_specifiers): Allow different
      	noexcept-specifiers if we've had errors.
      
      From-SVN: r225086
      Jason Merrill committed
    • re PR c++/66255 (ice in retrieve_specialization) · 7498239e
      	PR c++/66255
      	* pt.c (check_unstripped_args): Split out from...
      	(retrieve_specialization): ...here.  Allow typedefs in the type of
      	a non-type argument.
      
      From-SVN: r225084
      Jason Merrill committed
    • re PR c++/66067 (tree check ICE: accessed elt 1 of tree_vec with 0 elts in… · d15364ce
      re PR c++/66067 (tree check ICE: accessed elt 1 of tree_vec with 0 elts in write_template_args, at cp/mangle.c:2574)
      
      	PR c++/66067
      	* mangle.c (write_nested_name): Limit TYPENAME_TYPE handling to
      	TYPE_DECLs.
      	* mangle.c (write_template_args): Handle 0 length TREE_VEC.
      
      From-SVN: r225083
      Jason Merrill committed
    • re PR c++/66654 (ice in digest_init_r, at cp/typeck2.c:1103) · 7457279b
      	PR c++/66654
      	* typeck2.c (digest_init_r): Only expect reshaping if the class is
      	aggregate.
      
      From-SVN: r225082
      Jason Merrill committed
    • Implement N4258 (Cleaning-up noexcept in the Library rev 3) · a2b5fdcb
      	* doc/xml/manual/intro.xml: Document LWG 2108 status.
      	* include/bits/alloc_traits.h (allocator_traits::is_always_equal):
      	Define.
      	* include/bits/allocator.h (allocator::is_always_equal): Likewise.
      	* include/bits/forward_list.h
      	(forward_list::operator=(forward_list&&)): Use __bool_constant.
      	(forward_list::swap(forward_list&)): Add noexcept.
      	* include/bits/hashtable.h (_Hashtable::operator=(_Hashtable&&)):
      	Likewise.
      	(_Hashtable::swap(_Hashtable&)): Likewise.
      	* include/bits/stl_deque.h (_Deque_base::_Deque_base(_Deque_base&&)):
      	Use _Alloc_traits::is_always_equal.
      	(deque::operator=(deque&&)): Likewise.
      	(deque::_M_move_assign1(deque&&, false_type)): Add comment and use
      	__bool_constant.
      	(swap(deque&, deque&)): Add noexcept.
      	* include/bits/stl_list.h (list::operator=(list&&)): Use
      	__bool_constant.
      	(swap(list&, list&)): Add noexcept.
      	* include/bits/stl_map.h (map::swap(map&)): Include _Compare in
      	noexcept.
      	(swap(map&, map&)): Add noexcept.
      	* include/bits/stl_multimap.h (multimap::swap(multimap&)): Include
      	_Compare in noexcept.
      	(swap(multimap&, multimap&)): Add noexcept.
      	* include/bits/stl_multiset.h (multiset::swap(multiset&)): Include
      	_Compare in noexcept.
      	(swap(multiset&, multiset&)): Add noexcept.
      	* include/bits/stl_set.h (set::swap(set&)): Include _Compare in
      	noexcept.
      	(swap(set&, set&)): Add noexcept.
      	* include/bits/stl_tree.h (_Rb_tree::operator=(_Rb_tree&&)): Include
      	_Compare in noexcept.
      	(_Rb_tree::_Rb_tree(_Rb_tree&&, _Node_alloc_type&&)): Use
      	is_always_equal.
      	* include/bits/stl_vector.h (vector::operator=(vector&&)): Use
      	__bool_constant.
      	(swap(vector&, vector&)): Add noexcept.
      	* include/bits/unordered_map.h (swap(unordered_map&, unordered_map&),
      	swap(unordered_multimap& unordered_multimap&)): Add noexcept.
      	* include/bits/unordered_set.h (swap(unordered_set&, unordered_set&),
      	swap(unordered_multiset& unordered_multiset&)): Add noexcept.
      	* include/ext/alloc_traits.h (__allocator_always_compares_equal):
      	Remove.
      	(__alloc_traits::_S_always_equal()): Use is_always_equal instead of
      	__allocator_always_compares_equal.
      	* include/ext/array_allocator.h (array_allocator::is_always_equal):
      	Define.
      	* include/std/scoped_allocator (__any_of, __propagate_on_copy,
      	__propagate_on_move, __propagate_on_swap): Remove.
      	(scoped_allocator_adaptor::propagate_on_container_copy_assignment,
      	scoped_allocator_adaptor::propagate_on_container_move_assignment,
      	scoped_allocator_adaptor::propagate_on_container_swap): Define with
      	__and_ instead of __any_of.
      	(scoped_allocator_adaptor::is_always_equal): Define.
      	* testsuite/20_util/allocator_traits/members/is_always_equal.cc: New.
      	* testsuite/20_util/scoped_allocator/propagation.cc: Make traits
      	derive from true_type or false_type.
      	* testsuite/23_containers/deque/allocator/move_assign-2.cc: Add
      	is_always_equal member and remove the trait specialization.
      	* testsuite/23_containers/vector/52591.cc: Likewise.
      	* testsuite/23_containers/deque/requirements/dr438/assign_neg.cc:
      	Adjust dg-error line number.
      	* testsuite/23_containers/deque/requirements/dr438/
      	constructor_1_neg.cc: Likewise.
      	* testsuite/23_containers/deque/requirements/dr438/
      	constructor_2_neg.cc: Likewise.
      	* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
      	Likewise.
      	* testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
      	Likewise.
      	* testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc:
      	Likewise.
      	* testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
      	Likewise.
      	* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
      	Likewise.
      	* testsuite/23_containers/vector/requirements/dr438/
      	constructor_1_neg.cc: Likewise.
      	* testsuite/23_containers/vector/requirements/dr438/
      	constructor_2_neg.cc: Likewise.
      	* testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
      	Likewise.
      
      From-SVN: r225081
      Jonathan Wakely committed
    • array-notation-common.c (find_rank): Use INDIRECT_REF_P. · 22d03525
      	* array-notation-common.c (find_rank): Use INDIRECT_REF_P.
      	* c-common.c (c_fully_fold_internal): Likewise.
      	(c_alignof_expr): Likewise.
      	* c-pretty-print.c (c_pretty_printer::postfix_expression): Likewise.
      	* c-ubsan.c (ubsan_instrument_bounds): Likewise.
      	* cilk.c (create_parm_list): Likewise. 
      
      	* c-array-notation.c (fix_builtin_array_notation_fn): Use
      	INDIRECT_REF_P.
      	* c-typeck.c (array_to_pointer_conversion): Likewise.
      	(build_unary_op): Likewise.
      	(c_finish_return): Likewise.
      
      From-SVN: r225080
      Marek Polacek committed
    • stl_bvector.h (vector<bool>::vector()): Add noexcept. · 504a5fe6
      	* include/bits/stl_bvector.h (vector<bool>::vector()): Add noexcept.
      	* include/bits/stl_map.h (map::map()): Likewise.
      	* include/bits/stl_multimap.h (multimap::multimap()): Likewise.
      	* include/bits/stl_multiset.h (multiset::multiset()): Likewise.
      	* include/bits/stl_set.h (set::set()): Likewise.
      
      From-SVN: r225024
      Jonathan Wakely committed
    • hash-map.h (hash_map::traverse): Use the definition of the Key typedef rather… · 5265e7ba
      hash-map.h (hash_map::traverse): Use the definition of the Key typedef rather than the typedef itself.
      
      gcc/
      	* hash-map.h (hash_map::traverse): Use the definition of the
      	Key typedef rather than the typedef itself.
      
      From-SVN: r225021
      Richard Sandiford committed
    • Fix PR 66301 - check for dump_file in eliminate_dom_walker::before_dom_children · 1218f76f
      2015-06-26  Martin Jambor  <mjambor@suse.cz>
      
      	PR debug/66301
      	* tree-ssa-pre.c (before_dom_children): Check that dump_file is not
      	NULL instead of calling dump_enabled_p.
      
      From-SVN: r225019
      Martin Jambor committed
    • [Patch AArch64 4/4] Add -moverride tuning command, and wire it up for · 8dec06f2
       control of fusion and fma-steering
      
      gcc/
      
      	* config/aarch64/aarch64.opt: (override): New.
      	* doc/invoke.texi (override): Document.
      	* config/aarch64/aarch64.c (aarch64_flag_desc): New
      	(aarch64_fusible_pairs): Likewise.
      	(aarch64_tuning_flags): Likewise.
      	(aarch64_tuning_override_function): Likewise.
      	(aarch64_tuning_override_functions): Likewise.
      	(aarch64_parse_one_option_token): Likewise.
      	(aarch64_parse_boolean_options): Likewise.
      	(aarch64_parse_fuse_string): Likewise.
      	(aarch64_parse_tune_string): Likewise.
      	(aarch64_parse_one_override_token): Likewise.
      	(aarch64_parse_override_string): Likewise.
      	(aarch64_override_options): Parse the -override string if it
      	is present.
      
      From-SVN: r225018
      James Greenhalgh committed
    • [AArch64][2/2] Implement -fpic for -mcmodel=small · 1b1e81f8
      2015-06-26  Jiong Wang  <jiong.wang@arm.com>
      
      gcc/
        * config/aarch64/aarch64-protos.h (aarch64_symbol_type): New type
        SYMBOL_SMALL_GOT_28K.
        * config/aarch64/aarch64.md: (ldr_got_small_<mode>): Support new GOT
        relocation modifiers.
        (unspec): New enum "UNSPEC_GOTMALLPIC28K.
        (ldr_got_small_28k_<mode>): New.
        (ldr_got_small_28k_sidi): New.
        * config/aarch64/iterators.md (got_modifier): New mode iterator.
        * config/aarch64/aarch64-otps.h (aarch64_code_model): New model.
        * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Support
        SYMBOL_SMALL_GOT_28K.
        (aarch64_rtx_costs): Add costs for new instruction sequences.
        (initialize_aarch64_code_model): Initialize new model.
        (aarch64_classify_symbol): Recognize new model and new symbol classification.
        (aarch64_asm_preferred_eh_data_format): Support new model.
        (aarch64_load_symref_appropriately): Generate new instruction
        sequences for -fpic.
        (TARGET_USE_PSEUDO_PIC_REG): New definition.
        (aarch64_use_pseudo_pic_reg): New function.
      
      gcc/testsuite/
        * gcc.target/aarch64/pic-small.c: New testcase.
      
      From-SVN: r225017
      Jiong Wang committed
    • [Patch AArch64 3/4] De-const-ify struct tune_params · b175b679
      gcc/
      
      	* config/aarch64/aarch64-protos.h (tune_params): Remove
      	const from members.
      	(aarch64_tune_params): Remove const, change to no longer be
      	a pointer.
      	* config/aarch64/aarch64.c (aarch64_tune_params): Remove const,
      	change to no longer be a pointer, initialize to generic_tunings.
      	(aarch64_min_divisions_for_recip_mul): Change dereference of
      	aarch64_tune_params to member access.
      	(aarch64_reassociation_width): Likewise.
      	(aarch64_rtx_mult_cost): Likewise.
      	(aarch64_address_cost): Likewise.
      	(aarch64_branch_cost): Likewise.
      	(aarch64_rtx_costs): Likewise.
      	(aarch64_register_move_cost): Likewise.
      	(aarch64_memory_move_cost): Likewise.
      	(aarch64_sched_issue_rate): Likewise.
      	(aarch64_builtin_vectorization_cost): Likewise.
      	(aarch64_override_options): Take a copy of the selected tuning
      	struct in to aarch64_tune_params, rather than just setting
      	a pointer, change dereferences of aarch64_tune_params to member
      	accesses.
      	(aarch64_override_options_after_change): Change dereferences of
      	aarch64_tune_params to member access.
      	(aarch64_macro_fusion_p): Likewise.
      	(aarch_macro_fusion_pair_p): Likewise.
      	* config/aarch64/cortex-a57-fma-steering.c (gate): Likewise.
      
      From-SVN: r225016
      James Greenhalgh committed
    • [Patch AArch64 2/4] Control the FMA steering pass in tuning structures rather… · dfba575f
      [Patch AArch64 2/4] Control the FMA steering pass in tuning  structures rather than as core property
      
      gcc/
      
      	* config/aarch64/aarch64.h (AARCH64_FL_USE_FMA_STEERING_PASS): Delete.
      	(aarch64_tune_flags): Likewise.
      	(AARCH64_TUNE_FMA_STEERING): Likewise.
      	* config/aarch64/aarch64-cores.def (cortex-a57): Remove reference
      	to AARCH64_FL_USE_FMA_STEERING_PASS.
      	(cortex-a57.cortex-a53): Likewise.
      	(cortex-a72): Use cortexa72_tunings.
      	(cortex-a72.cortex-a53): Likewise.
      	(exynos-m1): Likewise.
      	* config/aarch64/aarch64-protos.h (tune_params): Add
      	a field: extra_tuning_flags.
      	* config/aarch64/aarch64-tuning-flags.def: New.
      	* config/aarch64/aarch64-protos.h (AARCH64_EXTRA_TUNING_OPTION): New.
      	(aarch64_extra_tuning_flags): Likewise.
      	(aarch64_tune_params): Declare here.
      	* config/aarch64/aarch64.c (generic_tunings): Set extra_tuning_flags.
      	(cortexa53_tunings): Likewise.
      	(cortexa57_tunings): Likewise.
      	(thunderx_tunings): Likewise.
      	(xgene1_tunings): Likewise.
      	(cortexa72_tunings): New.
      	* config/aarch64/cortex-a57-fma-steering.c: Include aarch64-protos.h.
      	 (gate): Check against aarch64_tune_params.
      	* config/aarch64/t-aarch64 (cortex-a57-fma-steering.o): Depend on
      	aarch64-protos.h.
      
      From-SVN: r225015
      James Greenhalgh committed
    • [Patch AArch64 1/4] Define candidates for instruction fusion in a .def file · 665dd6f3
      gcc/
      
      	* config/aarch64/aarch64-fusion-pairs.def: New.
      	* config/aarch64/aarch64-protos.h (aarch64_fusion_pairs): New.
      	* config/aarch64/aarch64.c (AARCH64_FUSE_NOTHING): Move to
      	aarch64_fusion_pairs.
      	(AARCH64_FUSE_MOV_MOVK): Likewise.
      	(AARCH64_FUSE_ADRP_ADD): Likewise.
      	(AARCH64_FUSE_MOVK_MOVK): Likewise.
      	(AARCH64_FUSE_ADRP_LDR): Likewise.
      	(AARCH64_FUSE_CMP_BRANCH): Likewise.
      
      From-SVN: r225014
      James Greenhalgh committed
    • [AArch64][1/2] Rename SYMBOL_SMALL_GOT to SYMBOL_SMALL_GOT_4G · 6642bdb4
      2015-06-26  Jiong Wang  <jiong.wang@arm.com>
      
      	* config/aarch64/aarch64-protos.h (aarch64_symbol_type): Rename
      	SYMBOL_SMALL_GOT to SYMBOL_SMALL_GOT_4G.
      	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Ditto.
      	(aarch64_expand_mov_immediate): Ditto.
      	(aarch64_print_operand): Ditto.
      	(aarch64_classify_symbol): Ditto.
      
      From-SVN: r225013
      Jiong Wang committed
    • re PR bootstrap/66638 (profiledbootstrap failure on x86-64 with LTO) · 8710e302
      
      	PR bootstrap/66638
      	* tree-ssa-loop-niter.c (loop_exits_before_overflow): Skip if
      	assertion failed.  Remove assertion itself.
      
      From-SVN: r225008
      Bin Cheng committed
    • fold-const.c (fold_binary_loc): Remove -A CMP -B -> A CMP B and -A CMP CST -> A… · 66e1cacf
      fold-const.c (fold_binary_loc): Remove -A CMP -B -> A CMP B and -A CMP CST -> A CMP -CST which is redundant...
      
      2015-06-26  Richard Biener  <rguenther@suse.de>
      
      	* fold-const.c (fold_binary_loc): Remove -A CMP -B -> A CMP B
      	and -A CMP CST -> A CMP -CST which is redundant with a pattern
      	in match.pd.
      	Move (A | C) == D where C & ~D != 0 -> 0, (X ^ Y) ==/!= 0 -> X ==/!= Y,
      	(X ^ Y) ==/!= {Y,X} -> {X,Y} ==/!= 0 and
      	(X ^ C1) op C2 -> X op (C1 ^ C2) to ...
      	* match.pd: ... patterns here.
      
      	* gcc.dg/tree-ssa/forwprop-25.c: Adjust.
      
      From-SVN: r225007
      Richard Biener committed