1. 13 Oct, 2017 18 commits
    • PR libstdc++/82481 Suppress clang-tidy warnings · d1e85aa9
      	PR libstdc++/82481
      	* include/std/mutex (call_once): Suppress clang-tidy warnings about
      	dangling references.
      
      From-SVN: r253724
      Jonathan Wakely committed
    • [PATCH] Tree structure marking · 7143b9d6
      https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00846.html
      	* tree-core.h (tree_contains_struct): Make bool.
      	* tree.c (tree_contains_struct): Likewise.
      	* tree.h (MARK_TS_BASE): Remove do ... while (0) idiom.
      	(MARK_TS_TYPED, MARK_TS_COMMON, MARK_TS_TYPE_COMMON,
      	MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_DECL_MINIMAL,
      	MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL, MARK_TS_DECL_WITH_VIS,
      	MARK_TS_DECL_NON_COMMON): Likewise, use comma operator.
      
      From-SVN: r253723
      Nathan Sidwell committed
    • 2017-10-13 Richard Biener <rguenther@suse.de> · 99758d1a
      	* graphite-isl-ast-to-gimple.c
      	(translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
      	parameters and dominance check.
      	(translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
      	(translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
      	(translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
      	Do not update SSA form here or do intermediate IL verification.
      	* graphite.c: Include tree-ssa.h and tree-into-ssa.h.
      	(graphite_initialize): Remove check on the number of loops in
      	the function and inline into graphite_transform_loops.
      	(graphite_finalize): Inline into graphite_transform_loops.
      	(graphite_transform_loops): Perform SSA update and IL verification
      	here.
      	* params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.
      
      	* gcc.dg/graphite/pr35356-3.c: XFAIL again.
      	* gcc.dg/graphite/pr81373-2.c: Copy from gcc.dg/graphite/pr81373.c
      	with alternate flags.
      
      From-SVN: r253721
      Richard Biener committed
    • 2017-10-13 Richard Biener <rguenther@suse.de> · 6fe00fb7
      	* graphite-isl-ast-to-gimple.c
      	(translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
      	parameters and dominance check.
      	(translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
      	(translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
      	(translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
      	Do not update SSA form here or do intermediate IL verification.
      	* graphite.c: Include tree-ssa.h and tree-into-ssa.h.
      	(graphite_initialize): Remove check on the number of loops in
      	the function and inline into graphite_transform_loops.
      	(graphite_finalize): Inline into graphite_transform_loops.
      	(graphite_transform_loops): Perform SSA update and IL verification
      	here.
      	* params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.
      
      	* gcc.dg/graphite/pr35356-3.c: XFAIL again.
      	* gcc.dg/graphite/pr81373-2.c: Copy from gcc.dg/graphite/pr81373.c
      	with alternate flags.
      
      From-SVN: r253720
      Richard Biener committed
    • graphite-isl-ast-to-gimple.c (max_mode_int_precision, [...]): Avoid global… · 1a8821c5
      graphite-isl-ast-to-gimple.c (max_mode_int_precision, [...]): Avoid global constructor by moving ...
      
      2017-10-13  Richard Biener  <rguenther@suse.de>
      
      	* graphite-isl-ast-to-gimple.c (max_mode_int_precision,
      	graphite_expression_type_precision): Avoid global constructor
      	by moving ...
      	(translate_isl_ast_to_gimple::translate_isl_ast_to_gimple): Here.
      	(translate_isl_ast_to_gimple::graphite_expr_type): Add type
      	member.
      	(translate_isl_ast_to_gimple::translate_isl_ast_node_for): Use it.
      	(translate_isl_ast_to_gimple::build_iv_mapping): Likewise.
      	(translate_isl_ast_to_gimple::graphite_create_new_guard): Likewise.
      	* graphite-sese-to-poly.c (build_original_schedule): Return nothing.
      
      	* gcc.dg/graphite/scop-10.c: Enlarge array to avoid undefined
      	behavior.
      	* gcc.dg/graphite/scop-7.c: Likewise.
      	* gcc.dg/graphite/scop-8.c: Likewise.
      
      From-SVN: r253719
      Richard Biener committed
    • i386: Check red zone size in push peephole2 · 2ecf9ac7
      Check red zone size, instead of if red zone is available, in push
      peephole2s.
      
      gcc/
      
      	PR target/82499
      	* config/i386/i386.h (ix86_red_zone_size): New.
      	* config/i386/i386.md (push peephole2s): Replace
      	"!ix86_using_red_zone ()" with "ix86_red_zone_size == 0".
      
      gcc/testsuite/
      
      	PR target/82499
      	* gcc.target/i386/pr82499-1.c: New file.
      	* gcc.target/i386/pr82499-2.c: Likewise.
      	* gcc.target/i386/pr82499-3.c: Likewise.
      
      From-SVN: r253718
      H.J. Lu committed
    • Prevent invalid register mode changes in combine · 8649149a
      This patch stops combine from changing the mode of an existing register
      in-place if doing so would change the size of the underlying register
      allocation size, as given by REGMODE_NATURAL_SIZE.  Without this,
      many tests fail in adjust_reg_mode after SVE is added.  One example
      is gcc.c-torture/compile/20090401-1.c.
      
      2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* combine.c (can_change_dest_mode): Reject changes in
      	REGMODE_NATURAL_SIZE.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r253717
      Richard Sandiford committed
    • Make more use of GET_MODE_UNIT_BITSIZE · 250a60f3
      This patch is like the previous GET_MODE_UNIT_SIZE one,
      but for bit rather than byte sizes.
      
      2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_BITSIZE.
      	(expand_debug_source_expr): Likewise.
      	* combine.c (combine_simplify_rtx): Likewise.
      	* cse.c (fold_rtx): Likewise.
      	* fwprop.c (canonicalize_address): Likewise.
      	* targhooks.c (default_shift_truncation_mask): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r253716
      Richard Sandiford committed
    • Make more use of GET_MODE_UNIT_SIZE · fb98441a
      This patch uses GET_MODE_UNIT_SIZE instead of GET_MODE_SIZE in
      cases where, for compound modes, the mode of the scalar elements
      is what matters.  E.g. the choice between truncation and extension
      is really based on the modes of the consistuent scalars rather
      than the mode as a whole.
      
      None of the existing code was wrong.  The patch simply makes
      things easier when converting to variable-sized modes.
      
      2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE.
      	(widened_mode): Likewise.
      	(expand_unop): Likewise.
      	* ree.c (transform_ifelse): Likewise.
      	(merge_def_and_ext): Likewise.
      	(combine_reaching_defs): Likewise.
      	* simplify-rtx.c (simplify_unary_operation_1): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r253715
      Richard Sandiford committed
    • Make more use of byte_lowpart_offset · 90f2b7e2
      This patch uses byte_lowpart_offset in places that open-coded the
      calculation.
      
      2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset.
      	* combine.c (gen_lowpart_for_combine): Likewise.
      	* dwarf2out.c (rtl_for_decl_location): Likewise.
      	* final.c (alter_subreg): Likewise.
      	* rtlhooks.c (gen_lowpart_general): Likewise.
      	(gen_lowpart_if_possible): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r253714
      Richard Sandiford committed
    • Make more use of subreg_lowpart_offset · 610c45fc
      This patch uses subreg_lowpart_offset in places that open-coded
      the calculation.  It also uses it in regcprop.c to test whether,
      after a mode change, the first register in a multi-register group
      is still the right one.
      
      2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* calls.c (expand_call): Use subreg_lowpart_offset.
      	* cse.c (cse_insn): Likewise.
      	* regcprop.c (copy_value): Likewise.
      	(copyprop_hardreg_forward_1): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r253713
      Richard Sandiford committed
    • re PR target/82524 (expensive-optimizations produces wrong results) · 5752d1f7
      	PR target/82524
      	* config/i386/i386.md (addqi_ext_1, andqi_ext_1,
      	*andqi_ext_1_cc, *<code>qi_ext_1, *xorqi_ext_1_cc): Change
      	=Q constraints to +Q and into insn condition add check
      	that operands[0] and operands[1] are equal.
      	(*addqi_ext_2, *andqi_ext_2, *<code>qi_ext_2): Change
      	=Q constraints to +Q and into insn condition add check
      	that operands[0] is equal to either operands[1] or operands[2].
      
      	* gcc.c-torture/execute/pr82524.c: New test.
      
      From-SVN: r253710
      Jakub Jelinek committed
    • re PR target/82498 (Missed optimization for x86 rotate instruction) · a0e4174c
      	PR target/82498
      	* fold-const.c (fold_binary_loc) <bit_rotate>: Code cleanups,
      	instead of handling MINUS_EXPR twice (once for each argument),
      	canonicalize operand order and handle just once, use rtype where
      	possible.  Handle (A << B) | (A >> (-B & (Z - 1))).
      
      	* gcc.dg/tree-ssa/pr82498.c: New test.
      
      From-SVN: r253709
      Jakub Jelinek committed
    • re PR target/82498 (Missed optimization for x86 rotate instruction) · ef8c92e8
      	PR target/82498
      	* config/i386/ia32intrin.h (__rold, __rord, __rolq, __rorq): Allow
      	any values of __C while still being pattern recognizable as a simple
      	rotate instruction.
      
      	* gcc.dg/ubsan/pr82498.c: New test.
      
      From-SVN: r253708
      Jakub Jelinek committed
    • re PR tree-optimization/82451 ([GRAPHITE] codegen error in get_rename_from_scev) · a68f286c
      2017-10-13  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82451
      	Revert
      	2017-10-02  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82355
      	* graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
      	a mapping for the enclosing loop but avoid generating one for
      	the loop tree root.
      	(copy_bb_and_scalar_dependences): Remove premature codegen
      	error on PHIs in blocks duplicated into multiple places.
      	* graphite-scop-detection.c
      	(scop_detection::stmt_has_simple_data_refs_p): For a loop not
      	in the region use it as loop and nest to analyze the DR in.
      	(try_generate_gimple_bb): Likewise.
      	* graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
      	(add_loop_constraints): For blocks in a loop not in the region
      	create a dimension with a single iteration.
      	* sese.h (gbb_loop_at_index): Remove assert.
      
      	* cfgloop.c (loop_preheader_edge): For the loop tree root
      	return the single successor of the entry block.
      	* graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
      	Reset the SCEV hashtable and niters.
      	* graphite-scop-detection.c
      	(scop_detection::graphite_can_represent_scev): Add SCOP parameter,
      	assert that we only have POLYNOMIAL_CHREC that vary in loops
      	contained in the region.
      	(scop_detection::graphite_can_represent_expr): Adjust.
      	(scop_detection::stmt_has_simple_data_refs_p): For loops
      	not in the region set loop to NULL.  The nest is now the
      	entry edge to the region.
      	(try_generate_gimple_bb): Likewise.
      	* sese.c (scalar_evolution_in_region): Adjust for
      	instantiate_scev change.
      	* tree-data-ref.h (graphite_find_data_references_in_stmt):
      	Make nest parameter the edge into the region.
      	(create_data_ref): Likewise.
      	* tree-data-ref.c (dr_analyze_indices): Make nest parameter an
      	entry edge into a region and adjust instantiate_scev calls.
      	(create_data_ref): Likewise.
      	(graphite_find_data_references_in_stmt): Likewise.
      	(find_data_references_in_stmt): Pass the loop preheader edge
      	from the nest argument.
      	* tree-scalar-evolution.h (instantiate_scev): Make instantiate_below
      	parameter the edge into the region.
      	(instantiate_parameters): Use the loop preheader edge as entry.
      	* tree-scalar-evolution.c (analyze_scalar_evolution): Handle
      	NULL loop.
      	(get_instantiated_value_entry): Make instantiate_below parameter
      	the edge into the region.
      	(instantiate_scev_name): Likewise.  Adjust dominance checks,
      	when we cannot use loop-based instantiation instantiate by
      	walking use-def chains.
      	(instantiate_scev_poly): Adjust.
      	(instantiate_scev_binary): Likewise.
      	(instantiate_scev_convert): Likewise.
      	(instantiate_scev_not): Likewise.
      	(instantiate_array_ref): Remove.
      	(instantiate_scev_3): Likewise.
      	(instantiate_scev_2): Likewise.
      	(instantiate_scev_1): Likewise.
      	(instantiate_scev_r): Do not blindly handle N-operand trees.
      	Do not instantiate array-refs.  Handle all constants and invariants.
      	(instantiate_scev): Make instantiate_below parameter
      	the edge into the region.
      	(resolve_mixers): Use the loop preheader edge for the region
      	parameter to instantiate_scev_r.
      	* tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Adjust.
      
      	* gcc.dg/graphite/pr82451.c: New testcase.
      	* gfortran.dg/graphite/id-27.f90: Likewise.
      	* gfortran.dg/graphite/pr82451.f: Likewise.
      
      From-SVN: r253707
      Richard Biener committed
    • re PR tree-optimization/82525 ([GRAPHITE] codegen error for modulo operations we cannot represent) · 1163f058
      2017-10-13  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82525
      	* graphite-isl-ast-to-gimple.c
      	(translate_isl_ast_to_gimple::widest_int_from_isl_expr_int): Split
      	out from ...
      	(translate_isl_ast_to_gimple::gcc_expression_from_isl_expr_int): Here.
      	Fail code generation when we cannot represent the isl integer.
      	(binary_op_to_tree): Elide modulo operations that are no-ops
      	in the type we code generate.  Remove now superfluous code
      	generation errors.
      
      	* gcc.dg/graphite/id-30.c: New testcase.
      	* gfortran.dg/graphite/id-28.f90: Likewise.
      
      From-SVN: r253706
      Richard Biener committed
    • graphite-scop-detection.c (loop_ivs_can_be_represented): Remove. · cae827b1
      2017-10-13  Richard Biener  <rguenther@suse.de>
      
      	* graphite-scop-detection.c (loop_ivs_can_be_represented): Remove.
      	(scop_detection::harmful_loop_in_region): Remove premature
      	IV type restriction.
      	(scop_detection::graphite_can_represent_scev): We can handle
      	pointer IVs just fine.
      
      From-SVN: r253705
      Richard Biener committed
    • Daily bump. · ca04e2cd
      From-SVN: r253704
      GCC Administrator committed
  2. 12 Oct, 2017 22 commits
    • Clobbers and Scratch Registers · 806aa9b2
      	* doc/extend.texi (Extended Asm <Clobbers>): Rename to
      	"Clobbers and Scratch Registers".  Add paragraph on
      	alternative to clobbers for scratch registers and OpenBLAS
      	example.
      
      From-SVN: r253701
      Alan Modra committed
    • Asm memory constraints · 7ff5eac3
      	* doc/extend.texi (Clobbers): Correct vax example.  Delete old
      	example of a memory input for a string of known length.  Move
      	commentary out of table.  Add a number of new examples
      	covering array memory inputs.
      testsuite/
      	* gcc.target/i386/asm-mem.c: New test.
      
      From-SVN: r253700
      Alan Modra committed
    • re PR tree-optimization/82493 (UBSAN in gcc/sbitmap.c:368:28: runtime error:… · 0af377c1
      re PR tree-optimization/82493 (UBSAN in gcc/sbitmap.c:368:28: runtime error: shift exponent 64 is too large for 64-bit type 'long unsigned int')
      
      	PR tree-optimization/82493
      	* sbitmap.c (bitmap_bit_in_range_p): Fix the implementation.
      	(test_range_functions): New function.
      	(sbitmap_c_tests): Likewise.
      	* selftest-run-tests.c (selftest::run_tests): Run new tests.
      	* selftest.h (sbitmap_c_tests): New function.
      
      	* tree-ssa-dse.c (live_bytes_read): Fix thinko.
      
      From-SVN: r253699
      Martin Liska committed
    • Fix spacing issue. · c64959bd
      From-SVN: r253696
      Michael Meissner committed
    • re PR target/82498 (Missed optimization for x86 rotate instruction) · 912a7ec3
      	PR target/82498
      	* config/i386/i386.md (*ashl<mode>3_mask_1,
      	*<shift_insn><mode>3_mask_1, *<rotate_insn><mode>3_mask_1,
      	*<btsc><mode>_mask_1, *btr<mode>_mask_1): New define_insn_and_split
      	patterns.
      
      	* gcc.target/i386/pr82498-1.c: New test.
      	* gcc.target/i386/pr82498-2.c: New test.
      
      From-SVN: r253695
      Jakub Jelinek committed
    • compiler: fix import of indirectly imported type alias · 1baafc8d
          
          We were looking for the " = " before the optional package name that
          appears for an indirect reference, but the exporter was putting it
          after.
          
          Test is https://golang.org/cl/70290.
          
          Reviewed-on: https://go-review.googlesource.com/70330
      
      From-SVN: r253694
      Ian Lance Taylor committed
    • [C++ PATCH] cp_expr tweak and delete unused enumerations · d89dac36
      https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00784.html
      	* cp-tree.h (cp_expr): Add const operator * and operator->
      	accessors.
      	(cp_tree_node_structure_enum): Delete TS_CP_BINDING,
      	TS_CP_WRAPPER, LAST_TS_CP_ENUM.
      
      From-SVN: r253693
      Nathan Sidwell committed
    • profile-count.c (safe_scale_64bit): Fix GCC4.x path. · 83d502cf
      
      	* profile-count.c (safe_scale_64bit): Fix GCC4.x path.
      	(profile_probability): Set max_probability
      	to (uint32_t) 1 << (n_bits - 2) and update accessors to avoid overlfows
      	in temporaries.
      	* profile-count.c (profile_probability::differs_from_p): Do not
      	rely on max_probaiblity == 10000
      
      	* gcc.dg/predict-13.c: Update template for probaility change.
      	* gcc.dg/predict-8.c: Likewise.
      
      From-SVN: r253692
      Jan Hubicka committed
    • tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with negative offsets. · 8b48488f
      	* tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with
      	negative offsets.
      
      From-SVN: r253691
      Jeff Law committed
    • C/C++: add fix-it hints for various missing symbols · 62e1c678
      The patch improves our C/C++ frontends' handling of missing
      symbols, by making c_parser_require and cp_parser_require use
      "better" locations for the diagnostic, and insert fix-it hints,
      under certain circumstances (see the comments in the patch for
      full details).
      
      For example, for this code with a missing semicolon:
      
        $ cat test.c
        int missing_semicolon (void)
        {
          return 42
        }
      
        trunk currently emits:
      
        test.c:4:1: error: expected ';' before '}' token
         }
         ^
      
      This patch adds a fix-it hint for the missing semicolon, and puts
      the error at the location of the missing semicolon, printing the
      followup token as a secondary location:
      
        test.c:3:12: error: expected ';' before '}' token
           return 42
                    ^
                    ;
         }
         ~
      
      More examples can be seen in the test cases.
      
      gcc/c-family/ChangeLog:
      	* c-common.c (enum missing_token_insertion_kind): New enum.
      	(get_missing_token_insertion_kind): New function.
      	(maybe_suggest_missing_token_insertion): New function.
      	* c-common.h (maybe_suggest_missing_token_insertion): New decl.
      
      gcc/c/ChangeLog:
      	* c-parser.c (c_parser_require): Add "type_is_unique" param and
      	use it to guard calls to maybe_suggest_missing_token_insertion.
      	(c_parser_parms_list_declarator): Override default value of new
      	"type_is_unique" param to c_parser_require.
      	(c_parser_asm_statement): Likewise.
      	* c-parser.h (c_parser_require): Add "type_is_unique" param,
      	defaulting to true.
      
      gcc/cp/ChangeLog:
      	* parser.c (get_required_cpp_ttype): New function.
      	(cp_parser_error_1): Call it, using the result to call
      	maybe_suggest_missing_token_insertion.
      
      gcc/testsuite/ChangeLog:
      	* c-c++-common/cilk-plus/AN/parser_errors.c: Update expected
      	output to reflect changes to reported locations of missing
      	symbols.
      	* c-c++-common/cilk-plus/AN/parser_errors2.c: Likewise.
      	* c-c++-common/cilk-plus/AN/parser_errors3.c: Likewise.
      	* c-c++-common/cilk-plus/AN/pr61191.c: Likewise.
      	* c-c++-common/gomp/pr63326.c: Likewise.
      	* c-c++-common/missing-close-symbol.c: Likewise, also update for
      	new fix-it hints.
      	* c-c++-common/missing-symbol.c: Likewise, also add test coverage
      	for missing colon in ternary operator.
      	* g++.dg/cpp1y/digit-sep-neg.C: Likewise.
      	* g++.dg/cpp1y/pr65202.C: Likewise.
      	* g++.dg/missing-symbol-2.C: New test case.
      	* g++.dg/other/do1.C: Update expected output to reflect
      	changes to reported locations of missing symbols.
      	* g++.dg/parse/error11.C: Likewise.
      	* g++.dg/template/error11.C: Likewise.
      	* gcc.dg/missing-symbol-2.c: New test case.
      	* gcc.dg/missing-symbol-3.c: New test case.
      	* gcc.dg/noncompile/940112-1.c: Update expected output to reflect
      	changes to reported locations of missing symbols.
      	* gcc.dg/noncompile/971104-1.c: Likewise.
      	* obj-c++.dg/exceptions-6.mm: Likewise.
      	* obj-c++.dg/pr48187.mm: Likewise.
      	* objc.dg/exceptions-6.m: Likewise.
      
      From-SVN: r253690
      David Malcolm committed
    • PR c/82301 - Updated test case g++.dg/ext/attr-ifunc-1.C (and others) in r253041… · 7a866e7e
      PR c/82301 - Updated test case g++.dg/ext/attr-ifunc-1.C (and others) in r253041 segfault on powerpc64
      
      PR c/82301 - Updated test case g++.dg/ext/attr-ifunc-1.C (and others) in r253041 segfault on powerpc64
      PR c/82435 - new __attribute__((alias)) warning gets in the way
      
      gcc/ChangeLog:
      
      	PR other/82301
      	PR c/82435
      	* cgraphunit.c (maybe_diag_incompatible_alias): New function.
      	(handle_alias_pairs): Call it.
      	* common.opt (-Wattribute-alias): New option.
      	* doc/extend.texi (ifunc attribute): Discuss C++ specifics.
      	* doc/invoke.texi (-Wattribute-alias): Document.
      
      gcc/testsuite/ChangeLog:
      
      	PR other/82301
      	PR c/82435
      	* g++.dg/ext/attr-ifunc-1.C: Update.
      	* g++.dg/ext/attr-ifunc-2.C: Same.
      	* g++.dg/ext/attr-ifunc-3.C: Same.
      	* g++.dg/ext/attr-ifunc-4.C: Same.
      	* g++.dg/ext/attr-ifunc-5.C: Same.
      	* g++.dg/ext/attr-ifunc-6.C: New test.
      	* g++.old-deja/g++.abi/vtable2.C: Update.
      	* gcc.dg/attr-ifunc-6.c: New test.
      	* gcc.dg/attr-ifunc-7.c: New test.
      	* gcc.dg/pr81854.c: Update.
      	* lib/target-supports.exp: Update.
      
      From-SVN: r253688
      Martin Sebor committed
    • C++: avoid partial duplicate implementation of cp_parser_error · e95c9129
      In r251026 (aka 3fe34694f0990d1d649711ede0326497f8a849dc,
      "C/C++: show pertinent open token when missing a close token")
      I copied part of cp_parser_error into cp_parser_required_error,
      leading to duplication of code.
      
      This patch eliminates this duplication by merging the two copies of the
      code into a new cp_parser_error_1 subroutine.
      
      Doing so removes an indentation level, making the patch appear to have
      more churn than it really does.
      
      The patch also undoes the change to g++.dg/parse/pragma2.C, as the
      old behavior is restored.
      
      From-SVN: r253686
      David Malcolm committed
    • revert: re PR sanitizer/82353 (runtime ubsan crash) · 2c79bfcf
      2017-10-12  Vladimir Makarov  <vmakarov@redhat.com>
      
      	Revert
      	2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
      	PR sanitizer/82353
      	* lra.c (collect_non_operand_hard_regs): Don't ignore operator
      	locations.
      	* lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
      	(make_hard_regno_born, make_hard_regno_dead): Update
      	bb_killed_pseudos and bb_gen_pseudos.
      
      From-SVN: r253685
      Vladimir Makarov committed
    • * x86-tune-sched.c (ix86_adjust_cost): Fix Zen support. · 3edf8a98
      From-SVN: r253684
      Jan Hubicka committed
    • alpha.c (alpha_split_conditional_move): Use std::swap instead of manually swapping. · 7159f19c
      	* config/alpha/alpha.c (alpha_split_conditional_move):
      	Use std::swap instead of manually swapping.
      	(alpha_stdarg_optimize_hook): Ditto.
      	(alpha_canonicalize_comparison): Ditto.
      
      From-SVN: r253681
      Uros Bizjak committed
    • tree-loop-distribution.c (struct builtin_info): New struct. · 939cf90f
      	* tree-loop-distribution.c (struct builtin_info): New struct.
      	(struct partition): Refactor fields into struct builtin_info.
      	(partition_free): Free struct builtin_info.
      	(build_size_arg_loc, build_addr_arg_loc): Delete.
      	(generate_memset_builtin, generate_memcpy_builtin): Get memory range
      	information from struct builtin_info.
      	(find_single_drs): New function refactored from classify_partition.
      	Also moved builtin validity checks to this function.
      	(compute_access_range, alloc_builtin): New functions.
      	(classify_builtin_st, classify_builtin_ldst): New functions.
      	(classify_partition): Refactor code into functions find_single_drs,
      	classify_builtin_st and classify_builtin_ldst.
      	(distribute_loop): Don't do runtime alias check when distributing
      	loop nest.
      	(find_seed_stmts_for_distribution): New function.
      	(pass_loop_distribution::execute): Refactor code finding seed
      	stmts into above function.  Support distribution for the innermost
      	two-level loop nest.  Adjust dump information.
      
      	gcc/testsuite
      	* gcc.dg/tree-ssa/ldist-28.c: New test.
      	* gcc.dg/tree-ssa/ldist-29.c: New test.
      	* gcc.dg/tree-ssa/ldist-30.c: New test.
      	* gcc.dg/tree-ssa/ldist-31.c: New test.
      
      From-SVN: r253680
      Bin Cheng committed
    • tree-loop-distribution.c: Adjust the general comment. · 163aa51b
      	* tree-loop-distribution.c: Adjust the general comment.
      	(NUM_PARTITION_THRESHOLD): New macro.
      	(ssa_name_has_uses_outside_loop_p): Support loop nest distribution.
      	(classify_partition): Skip builtin pattern of loop nest's inner loop.
      	(merge_dep_scc_partitions): New parameter ignore_alias_p and use it
      	in call to build_partition_graph.
      	(finalize_partitions): New parameter.  Make loop distribution more
      	conservative by fusing more partitions.
      	(distribute_loop): Don't do runtime alias check in case of loop nest
      	distribution.
      	(find_seed_stmts_for_distribution): New function.
      	(prepare_perfect_loop_nest): New function.
      	(pass_loop_distribution::execute): Refactor code finding seed stmts
      	and loop nest into above functions.  Support loop nest distribution.
      	Adjust dump information accordingly.
      
      	gcc/testsuite
      	* gcc.dg/tree-ssa/ldist-7.c: Adjust test string.
      	* gcc.dg/tree-ssa/ldist-16.c: Ditto.
      	* gcc.dg/tree-ssa/ldist-25.c: Ditto.
      	* gcc.dg/tree-ssa/ldist-33.c: New test.
      
      From-SVN: r253679
      Bin Cheng committed
    • tree-loop-distribution.c (break_alias_scc_partitions): Add comment and set… · 6dc29d3a
      tree-loop-distribution.c (break_alias_scc_partitions): Add comment and set PTYPE_SEQUENTIAL for merged partition.
      
      	* tree-loop-distribution.c (break_alias_scc_partitions): Add comment
      	and set PTYPE_SEQUENTIAL for merged partition.
      
      From-SVN: r253678
      Bin Cheng committed
    • re PR tree-optimization/69728 (internal compiler error: in… · f0c216e1
      re PR tree-optimization/69728 (internal compiler error: in outer_projection_mupa, at graphite-sese-to-poly.c:1175)
      
      2017-10-12  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/69728
      	Revert
      	2017-09-19  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/69728
      	* graphite-sese-to-poly.c (schedule_error): New global.
      	(add_loop_schedule): Handle empty domain by failing the
      	schedule.
      	(build_original_schedule): Handle schedule_error.
      
      	* graphite-sese-to-poly.c (add_loop_schedule): Handle empty
      	domain by returning an unchanged schedule.
      
      	* gcc.dg/graphite/pr69728.c: Adjust to reflect we can handle
      	the loop now.  Remove unrelated undefined behavior.
      
      From-SVN: r253677
      Richard Biener committed
    • genrecog.c (validate_pattern): For VEC_SELECT verify that CONST_INT selectors… · b989ffb2
      genrecog.c (validate_pattern): For VEC_SELECT verify that CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1.
      
      	* genrecog.c (validate_pattern): For VEC_SELECT verify that
      	CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1.
      
      From-SVN: r253676
      Jakub Jelinek committed
    • Makefile.in (TAGS): Merge all the *.def files into one pattern. · 712716d2
      	* Makefile.in (TAGS): Merge all the *.def files into one pattern.
      	Handle params.def.
      
      From-SVN: r253674
      Aldy Hernandez committed
    • re PR c++/82159 (ICE: in assign_temp, at function.c:961) · 6089393b
      	PR c++/82159
      	* expr.c (store_field): Don't optimize away bitsize == 0 store
      	from CALL_EXPR with addressable return type.
      
      	* g++.dg/opt/pr82159-2.C: New test.
      
      From-SVN: r253673
      Jakub Jelinek committed