156761 Commits

Author SHA1 Message Date
Richard Sandiford
90f2b7e220 Make more use of byte_lowpart_offset
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
2017-10-13 09:32:29 +00:00
Richard Sandiford
610c45fcbf Make more use of subreg_lowpart_offset
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
2017-10-13 09:23:54 +00:00
Jakub Jelinek
5752d1f794 re PR target/82524 (expensive-optimizations produces wrong results)
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
2017-10-13 09:29:51 +02:00
Jakub Jelinek
a0e4174cd8 re PR target/82498 (Missed optimization for x86 rotate instruction)
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
2017-10-13 09:28:46 +02:00
Jakub Jelinek
ef8c92e8e7 re PR target/82498 (Missed optimization for x86 rotate instruction)
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
2017-10-13 09:17:06 +02:00
Richard Biener
a68f286ccc re PR tree-optimization/82451 ([GRAPHITE] codegen error in get_rename_from_scev)
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
2017-10-13 07:02:55 +00:00
Richard Biener
1163f05876 re PR tree-optimization/82525 ([GRAPHITE] codegen error for modulo operations we cannot represent)
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
2017-10-13 06:59:13 +00:00
Richard Biener
cae827b1a1 graphite-scop-detection.c (loop_ivs_can_be_represented): Remove.
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
2017-10-13 06:57:11 +00:00
GCC Administrator
ca04e2cd56 Daily bump.
From-SVN: r253704
2017-10-13 00:16:16 +00:00
Alan Modra
806aa9b2f2 Clobbers and Scratch Registers
* 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
2017-10-13 08:52:15 +10:30
Alan Modra
7ff5eac3d8 Asm memory constraints
* 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
2017-10-13 08:51:06 +10:30
Martin Liska
0af377c15a 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
2017-10-12 15:53:21 -06:00
Michael Meissner
c64959bdf1 Fix spacing issue.
From-SVN: r253696
2017-10-12 21:25:10 +00:00
Jakub Jelinek
912a7ec3b1 re PR target/82498 (Missed optimization for x86 rotate instruction)
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
2017-10-12 21:10:34 +02:00
Ian Lance Taylor
1baafc8d19 compiler: fix import of indirectly imported type alias
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
2017-10-12 19:01:50 +00:00
Nathan Sidwell
d89dac3602 [C++ PATCH] cp_expr tweak and delete unused enumerations
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
2017-10-12 18:56:53 +00:00
Jan Hubicka
83d502cf40 profile-count.c (safe_scale_64bit): Fix GCC4.x path.
* 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
2017-10-12 18:48:59 +00:00
Jeff Law
8b48488fbe tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with negative offsets.
* tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with
	negative offsets.

From-SVN: r253691
2017-10-12 12:09:11 -06:00
David Malcolm
62e1c6780d C/C++: add fix-it hints for various missing symbols
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
2017-10-12 17:49:35 +00:00
Martin Sebor
7a866e7e31 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
2017-10-12 11:37:56 -06:00
David Malcolm
e95c912928 C++: avoid partial duplicate implementation of cp_parser_error
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
2017-10-12 17:29:15 +00:00
Vladimir Makarov
2c79bfcfc9 revert: re PR sanitizer/82353 (runtime ubsan crash)
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
2017-10-12 17:06:29 +00:00
Jan Hubicka
3edf8a985b * x86-tune-sched.c (ix86_adjust_cost): Fix Zen support.
From-SVN: r253684
2017-10-12 15:36:05 +00:00
Uros Bizjak
7159f19c1d alpha.c (alpha_split_conditional_move): Use std::swap instead of manually swapping.
* 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
2017-10-12 16:46:45 +02:00
Bin Cheng
939cf90f62 tree-loop-distribution.c (struct builtin_info): New struct.
* 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
2017-10-12 14:33:30 +00:00
Bin Cheng
163aa51b70 tree-loop-distribution.c: Adjust the general comment.
* 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
2017-10-12 14:29:45 +00:00
Bin Cheng
6dc29d3adc 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
2017-10-12 14:25:36 +00:00
Richard Biener
f0c216e116 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
2017-10-12 14:09:21 +00:00
Jakub Jelinek
b989ffb293 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
2017-10-12 14:11:11 +02:00
Aldy Hernandez
712716d2a0 Makefile.in (TAGS): Merge all the *.def files into one pattern.
* Makefile.in (TAGS): Merge all the *.def files into one pattern.
	Handle params.def.

From-SVN: r253674
2017-10-12 08:21:44 +00:00
Jakub Jelinek
6089393b74 re PR c++/82159 (ICE: in assign_temp, at function.c:961)
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
2017-10-12 09:23:24 +02:00
Jakub Jelinek
281ff779cc re PR sanitizer/82353 (runtime ubsan crash)
PR target/82353
	* gcc.target/i386/i386.exp (tests): Revert the '.C' extension change.
	* gcc.target/i386/pr82353.C: Moved to ...
	* g++.dg/ubsan/pr82353.C: ... here.  Restrict to i?86/x86_64 && lp64.

From-SVN: r253672
2017-10-12 09:22:12 +02:00
Segher Boessenkool
79f421e159 rs6000: Remove TARGET_ISEL64
TARGET_ISEL64 just means TARGET_ISEL && TARGET_POWERPC64.  Since
everywhere it is used uses :GPR already, we can just as well use
TARGET_ISEL always.


	* config/rs6000/rs6000.h (TARGET_ISEL64): Delete.
	* config/rs6000/rs6000.md (sel): Delete mode attribute.
	(mov<mode>cc, isel_signed_<mode>, isel_unsigned_<mode>,
	*isel_reversed_signed_<mode>, *isel_reversed_unsigned_<mode>): Use
	TARGET_ISEL instead of TARGET_ISEL<sel>.

From-SVN: r253671
2017-10-12 02:18:15 +02:00
GCC Administrator
7c754cebcf Daily bump.
From-SVN: r253670
2017-10-12 00:16:13 +00:00
David Edelsohn
c82da65c68 * config/rs6000/rs6000.c (rs6000_xcoff_asm_output_aligned_decl_common): Test for NULL decl.
From-SVN: r253667
2017-10-11 20:02:45 -04:00
Tony Reix
e94574b3bf go-system.h (__STDC_FORMAT_MACROS): Define before including any system header files, as is done in ../system.h.
* go-system.h (__STDC_FORMAT_MACROS): Define before including any
	system header files, as is done in ../system.h.

From-SVN: r253666
2017-10-11 22:54:32 +00:00
Segher Boessenkool
e7d77cf92d rs6000: Improve isel
This removes output_isel.  Instead, the define_insn's now output the
isel instructions directly.

It adds a reg_or_zero operand predicate, too, because the reg_or_cint
predicate is too lax here.  Also use it in the "reversed" variants of
the instructions.


	* config/rs6000/predicates.md (zero_constant, all_ones_constant):
	Move up in file.
	(reg_or_cint_operand): Fix comment.
	(reg_or_zero_operand): New predicate.
	* config/rs6000/rs6000-protos.h (output_isel): Delete.
	* config/rs6000/rs6000.c (output_isel): Delete.
	* config/rs6000/rs6000.md (isel_signed_<mode>): Use reg_or_zero_operand
	instead of reg_or_cint_operand.  Output instruction directly (not via
	output_isel).
	(isel_unsigned_<mode>): Ditto.
	(*isel_reversed_signed_<mode>): Use reg_or_zero_operand instead of
	gpc_reg_operand.  Add an instruction alternative for this.  Output
	instruction directly.
	(*isel_reversed_unsigned_<mode>): Ditto.

From-SVN: r253665
2017-10-12 00:40:52 +02:00
Ian Lance Taylor
3ff1b2b0a9 runtime: fix issues on AIX about uintptr(_t)
Reviewed-on: https://go-review.googlesource.com/69891

From-SVN: r253664
2017-10-11 21:16:49 +00:00
Uros Bizjak
07a5fe52c5 i386.c (ix86_canonicalize_comparison): New function.
* config/i386/i386.c (ix86_canonicalize_comparison): New function.
	(TARGET_CANONICALIZE_COMPARISON): Define.

testsuite/ChangeLog:

	* gcc.target/i386/387-ficom-2.c: New test.

From-SVN: r253663
2017-10-11 23:15:59 +02:00
Jakub Jelinek
ca38a07b06 re PR middle-end/80421 (Case dispatch is scrambled in switch-statement)
PR middle-end/80421
	* gcc.c-torture/execute/pr80421.c: New test.

From-SVN: r253662
2017-10-11 22:51:08 +02:00
Jakub Jelinek
69c328ec60 re PR tree-optimization/78558 (Incorrect loop optimization leads to crash)
PR tree-optimization/78558
	* gcc.dg/vect/pr78558.c: New test.

From-SVN: r253661
2017-10-11 22:50:46 +02:00
Jakub Jelinek
1d5b9dd5c6 re PR c++/82414 (Issue with ODR/LTO in G++)
PR c++/82414
	* g++.dg/lto/pr82414_0.C: New test.

From-SVN: r253660
2017-10-11 22:50:27 +02:00
Jakub Jelinek
fbb0add7c6 re PR c++/78523 (ICE on valid lambda code with implicit capture)
PR c++/78523
	* g++.dg/cpp1y/pr78523.C: New test.

From-SVN: r253659
2017-10-11 22:50:07 +02:00
Jakub Jelinek
666a1c32f5 re PR c++/80194 (ICE with local constant referenced by a lambda expression)
PR c++/80194
	* g++.dg/cpp1y/pr80194.C: New test.

From-SVN: r253658
2017-10-11 22:49:46 +02:00
Qing Zhao
241dbd9d68 re PR target/81422 ([aarch64] internal compiler error: in update_equiv_regs, at ira.c:3425)
/gcc
2017-10-11  Qing Zhao  <qing.zhao@oracle.com>

	PR target/81422
	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately):
	Check whether the dest is REG before adding REG_EQUIV note.

/gcc/testsuite
2017-10-11  Qing Zhao  <qing.zhao@oracle.com>

	PR target/81422
      	* gcc.target/aarch64/pr81422.C: New test.

From-SVN: r253657
2017-10-11 19:43:54 +00:00
Vladimir Makarov
6dcb9e910b re PR sanitizer/82353 (runtime ubsan crash)
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.

2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>

	PR sanitizer/82353
	* gcc.target/i386/i386.exp (tests): Permit '.C' extension.
	* gcc.target/i386/pr82353.C: New.

From-SVN: r253656
2017-10-11 19:35:48 +00:00
Nathan Sidwell
b90c933812 [PATCH] Include path enumeration
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00693.html
	gcc/
	* incpath.h (enum incpath_kind): Name enum, prefix values.
	(add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind.
	* incpath.c (heads, tails): Use INC_MAX.
	(add_env_var_paths, add_standard_paths): Use incpath_kind.
	(merge_include_chains, split_quote_chain,
	register_include_chains): Update incpath_kind names.
	(add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind.
	* config/darwin-c.c (add_system_framework_path): Update incpath_kind
	names.
	(add_framework_path, darwin_register_objc_includes): Likewise.
	* config/vms/vms-c.c (vms_c_register_includes): Likewise.
	gcc/c-family/
	* c-opts.c (add_prefixed_path): Change chain to incpath_kind.
	(c_common_handle_option): Update incpath_kind names.
	gcc/fortran/
	* cpp.c (gfc_cpp_add_include_path): Update incpath_e names.
	(gfc_cpp_add_include_path_after): Likewise.

From-SVN: r253654
2017-10-11 18:09:59 +00:00
Uros Bizjak
42851ff81d i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387): Do not use float_operator operator predicate.
* config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
	Do not use float_operator operator predicate.
	(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
	* config/i386/predicates.md (float_operator): Remove predicate.

	* config/i386/i386.md (*jcc<mode>_0_i387): Remove insn pattern.
	(*jccxf_i387): Ditto.
	(*jcc<mode>_i387): Ditto.
	(*jccu<mode>_i387): Ditto.
	(*jcc<X87MODEF:mode>_<SWI24:mode>_i387): Ditto.
	(*jcc_*_i387 splitters): Remove.
	* config/i386/i386-protos.h (ix86_split_fp_branch): Remove prototype.
	* config/i386/i386.c (ix86_split_fp_branch): Remove.
	* config/i386/predicates.md (ix86_swapped_fp_comparison_operator):
	Remove predicate.

testsuite/ChangeLog:

	* gcc.target/i386/387-ficom-1.c: New test.

From-SVN: r253653
2017-10-11 20:00:55 +02:00
Jan Hubicka
9588ea78db profile-count.h (slow_safe_scale_64bit): New function.
* profile-count.h (slow_safe_scale_64bit): New function.
	(safe_scale_64bit): New inline.
	(profile_count::max_safe_multiplier): Remove; use safe_scale_64bit.
	* profile-count.c: Include wide-int.h
	(slow_safe_scale_64bit): New.

From-SVN: r253652
2017-10-11 17:37:18 +00:00
Jeff Law
278a84349a struct-layout-1_generate.c (generate_fields): Fix typo in address computation of end of complex_attrib_array_types.
* gcc.dg/struct-layout-1_generate.c (generate_fields): Fix typo in
	address computation of end of complex_attrib_array_types.

From-SVN: r253650
2017-10-11 11:21:53 -06:00