Commit Graph

155475 Commits

Author SHA1 Message Date
Richard Sandiford
9adee30521 Use base inequality for some vector alias checks
This patch checks whether two data references x and y cannot
partially overlap and so are independent whenever &x != &y.
We can then use this in the vectoriser to optimise alias checks.

gcc/
2016-08-04  Richard Sandiford  <richard.sandiford@linaro.org>

	* hash-traits.h (pair_hash): New struct.
	* tree-data-ref.h (data_dependence_relation): Add object_a and
	object_b fields.
	(DDR_OBJECT_A, DDR_OBJECT_B): New macros.
	* tree-data-ref.c (initialize_data_dependence_relation): Initialize
	DDR_OBJECT_A and DDR_OBJECT_B.
	* tree-vectorizer.h (vec_object_pair): New type.
	(_loop_vec_info): Add a check_unequal_addrs field.
	(LOOP_VINFO_CHECK_UNEQUAL_ADDRS): New macro.
	(LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Return true if there is an
	entry in check_unequal_addrs.  Check comp_alias_ddrs instead of
	may_alias_ddrs.
	* tree-vect-loop.c (destroy_loop_vec_info): Release
	LOOP_VINFO_CHECK_UNEQUAL_ADDRS.
	(vect_analyze_loop_2): Likewise, when restarting.
	(vect_estimate_min_profitable_iters): Estimate the cost of
	LOOP_VINFO_CHECK_UNEQUAL_ADDRS.
	* tree-vect-data-refs.c: Include tree-hash-traits.h.
	(vect_prune_runtime_alias_test_list): Try to handle conflicts
	using LOOP_VINFO_CHECK_UNEQUAL_ADDRS, if the data dependence allows.
	Count such tests in the final summary.
	* tree-vect-loop-manip.c (chain_cond_expr): New function.
	(vect_create_cond_for_align_checks): Use it.
	(vect_create_cond_for_unequal_addrs): New function.
	(vect_loop_versioning): Call it.

gcc/testsuite/
	* gcc.dg/vect/vect-alias-check-6.c: New test.

From-SVN: r250868
2017-08-04 10:40:35 +00:00
Richard Sandiford
dfbddbeb1c Handle data dependence relations with different bases
This patch tries to calculate conservatively-correct distance
vectors for two references whose base addresses are not the same.
It sets a new flag DDR_COULD_BE_INDEPENDENT_P if the dependence
isn't guaranteed to occur.

The motivating example is:

  struct s { int x[8]; };
  void
  f (struct s *a, struct s *b)
  {
    for (int i = 0; i < 8; ++i)
      a->x[i] += b->x[i];
  }

in which the "a" and "b" accesses are either independent or have a
dependence distance of 0 (assuming -fstrict-aliasing).  Neither case
prevents vectorisation, so we can vectorise without an alias check.

I'd originally wanted to do the same thing for arrays as well, e.g.:

  void
  f (int a[][8], struct b[][8])
  {
    for (int i = 0; i < 8; ++i)
      a[0][i] += b[0][i];
  }

I think this is valid because C11 6.7.6.2/6 says:

  For two array types to be compatible, both shall have compatible
  element types, and if both size specifiers are present, and are
  integer constant expressions, then both size specifiers shall have
  the same constant value.

So if we access an array through an int (*)[8], it must have type X[8]
or X[], where X is compatible with int.  It doesn't seem possible in
either case for "a[0]" and "b[0]" to overlap when "a != b".

However, as the comment above "if (same_base_p)" explains, GCC is more
forgiving: it supports arbitrary overlap of arrays and allows arrays to
be accessed with different dimensionality.  There are examples of this
in PR50067.  The patch therefore only handles references that end in a
structure field access.

There are two ways of handling these dependences in the vectoriser:
use them to limit VF, or check at runtime as before.  I've gone for
the approach of checking at runtime if we can, to avoid limiting VF
unnecessarily, but falling back to a VF cap when runtime checks aren't
allowed.

The patch tests whether we queued an alias check with a dependence
distance of X and then picked a VF <= X, in which case it's safe to
drop the alias check.  Since vect_prune_runtime_alias_check_list
can be called twice with different VF for the same loop, it's no
longer safe to clear may_alias_ddrs on exit.  Instead we should use
comp_alias_ddrs to check whether versioning is necessary.

2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* tree-data-ref.h (subscript): Add access_fn field.
	(data_dependence_relation): Add could_be_independent_p.
	(SUB_ACCESS_FN, DDR_COULD_BE_INDEPENDENT_P): New macros.
	(same_access_functions): Move to tree-data-ref.c.
	* tree-data-ref.c (ref_contains_union_access_p): New function.
	(access_fn_component_p): Likewise.
	(access_fn_components_comparable_p): Likewise.
	(dr_analyze_indices): Add a reference to access_fn_component_p.
	(dump_data_dependence_relation): Use SUB_ACCESS_FN instead of
	DR_ACCESS_FN.
	(constant_access_functions): Likewise.
	(add_other_self_distances): Likewise.
	(same_access_functions): Likewise.  (Moved from tree-data-ref.h.)
	(initialize_data_dependence_relation): Use XCNEW and remove
	explicit zeroing of DDR_REVERSED_P.  Look for a subsequence
	of access functions that have the same type.  Allow the
	subsequence to end with different bases in some circumstances.
	Record the chosen access functions in SUB_ACCESS_FN.
	(build_classic_dist_vector_1): Replace ddr_a and ddr_b with
	a_index and b_index.  Use SUB_ACCESS_FN instead of DR_ACCESS_FN.
	(subscript_dependence_tester_1): Likewise dra and drb.
	(build_classic_dist_vector): Update calls accordingly.
	(subscript_dependence_tester): Likewise.
	* tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Check
	DDR_COULD_BE_INDEPENDENT_P.
	* tree-vectorizer.h (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Test
	comp_alias_ddrs instead of may_alias_ddrs.
	* tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
	New function.
	(vect_analyze_data_ref_dependence): Use it if
	DDR_COULD_BE_INDEPENDENT_P, but fall back to using the recorded
	distance vectors if that fails.
	(dependence_distance_ge_vf): New function.
	(vect_prune_runtime_alias_test_list): Use it.  Don't clear
	LOOP_VINFO_MAY_ALIAS_DDRS.

gcc/testsuite/
	* gcc.dg/vect/vect-alias-check-3.c: New test.
	* gcc.dg/vect/vect-alias-check-4.c: Likewise.
	* gcc.dg/vect/vect-alias-check-5.c: Likewise.

From-SVN: r250867
2017-08-04 10:39:44 +00:00
Richard Biener
165b2f5f5d re PR middle-end/81705 (UBSAN: yet another false positive)
2017-08-04  Richard Biener  <rguenther@suse.de>

	PR middle-end/81705
	* fold-const.c (fold_binary_loc): Properly restrict
	minus_var0 && minus_var1 case when associating undefined overflow
	entities.

	* c-c++-common/ubsan/pr81705.c: New testcase.

From-SVN: r250866
2017-08-04 10:33:39 +00:00
Tom de Vries
54cb4e2006 Add missing edge probability in simd_clone_adjust
Currently we generate an if with probability set on only one of the two edges:
  <bb 5> [0.00%] [count: INV]:
  _5 = mask.3[iter.6_3];
  if (_5 == 0)
    goto <bb 6>; [INV] [count: INV]
  else
    goto <bb 2>; [100.00%] [count: INV]

Add the missing edge probability, and set the split to unlikely/likely:
  if (_5 == 0)
    goto <bb 6>; [19.99%] [count: INV]
  else
    goto <bb 2>; [80.01%] [count: INV]

2017-08-04  Tom de Vries  <tom@codesourcery.com>

	* omp-simd-clone.c (simd_clone_adjust): Add missing edge probability.

From-SVN: r250865
2017-08-04 07:27:05 +00:00
GCC Administrator
07cf14668f Daily bump.
From-SVN: r250864
2017-08-04 00:16:34 +00:00
Bill Schmidt
7c0881d531 rs6000-c.c (altivec_resolve_overloaded_builtin): Don't start diagnostic messages with a capital letter.
[gcc]

2017-08-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
	Don't start diagnostic messages with a capital letter.
	* config/rs6000/rs6000.c (rs6000_option_override_internal):
	Likewise.
	(rs6000_invalid_builtin): Likewise.
	(rs6000_trampoline_init): Likewise.

[gcc/testsuite]

2017-08-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c: Adjust for error
	messages that used to start with a capital letter.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-gt-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-exp-lt-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-cmp-unordered-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-exp-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-exp-4.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-sig-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-extract-sig-4.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-10.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-4.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-insert-exp-7.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-11.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-6.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-7.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-3.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-5.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-exp-2.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-exp-3.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-sig-2.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-sig-3.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-2.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-3.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-6.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-7.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-2.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-3.c: Likewise.
	* gcc.target/powerpc/byte-in-either-range-1.c: Likewise.
	* gcc.target/powerpc/byte-in-range-1.c: Likewise.
	* gcc.target/powerpc/byte-in-set-1.c: Likewise.
	* gcc.target/powerpc/crypto-builtin-2.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-1.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-11.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-16.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-21.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-26.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-31.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-36.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-41.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-46.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-51.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-56.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-6.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-61.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-66.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-71.c: Likewise.
	* gcc.target/powerpc/dfp/dtstsfi-76.c: Likewise.
	* gcc.target/powerpc/vsu/vec-all-nez-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-any-eqz-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cmpnez-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cntlz-lsbb-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-cnttz-lsbb-2.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xl-len-12.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xlx-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xrx-7.c: Likewise.
	* gcc.target/powerpc/vsu/vec-xst-len-12.c: Likewise.

From-SVN: r250860
2017-08-03 21:22:03 +00:00
Ian Lance Taylor
194f08aeae re PR go/81617 (mksigtab.sh fails to resolve NSIG with glibc 2.26)
PR go/81617
    libgo: change mksigtab to recognize glibc 2.26 NSIG expression
    
    Fixes golang/go#21147
    Fixes GCC PR 81617
    
    Reviewed-on: https://go-review.googlesource.com/52611

From-SVN: r250858
2017-08-03 18:09:12 +00:00
Jakub Jelinek
2fdaed8980 re PR target/81621 (ICE in delete_insn, at cfgrtl.c:167 with s390x cross compiler)
PR target/81621
	* bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish
	after setting changeable df flags.

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

From-SVN: r250857
2017-08-03 16:41:08 +02:00
Richard Biener
63e434cafa lto-symtab.h (lto_symtab_prevail_decl): Do not use DECL_ABSTRACT_ORIGIN as flag we can end up using that.
2017-08-03  Richard Biener  <rguenther@suse.de>

	* lto-symtab.h (lto_symtab_prevail_decl): Do not use
	DECL_ABSTRACT_ORIGIN as flag we can end up using that.  Instead
	use DECL_LANG_FLAG_0.
	(lto_symtab_prevail_decl): Likewise.

From-SVN: r250856
2017-08-03 14:08:56 +00:00
Richard Biener
297db27910 tree-ssa-reassoc.c (should_break_up_subtract): Also break up if the use is in USE - X.
2017-08-03  Richard Biener  <rguenther@suse.de>

	* tree-ssa-reassoc.c (should_break_up_subtract): Also break
	up if the use is in USE - X.

	* gcc.dg/tree-ssa/reassoc-23.c: Adjust to fool early folding
	and CSE.

From-SVN: r250855
2017-08-03 14:08:15 +00:00
Alexander Monakov
75560de5f5 toplev: avoid recursive emergency_dump_function
* toplev.c (dumpfile.h): New include.
	(internal_error_reentered): New static function.  Use it...
	(internal_error_function): ...here to handle reentered internal_error.

From-SVN: r250854
2017-08-03 16:39:47 +03:00
Richard Biener
2d7744d4ef re PR sanitizer/81148 (UBSAN: two more false positives)
2017-08-03 Richard Biener  <rguenther@suse.de>

	PR middle-end/81148
	* fold-const.c (split_tree): Add minus_var and minus_con
	arguments, remove unused loc arg.  Never generate NEGATE_EXPRs
	here but always use minus_*.
	(associate_trees): Assert we never associate with MINUS_EXPR
	and NULL first operand.  Do not recurse for PLUS_EXPR operands
	when associating as MINUS_EXPR either.
	(fold_binary_loc): Track minus_var and minus_con.

	* c-c++-common/ubsan/pr81148.c: New testcase.

From-SVN: r250853
2017-08-03 11:52:00 +00:00
Tom de Vries
3cd361256d Apply finish_options on DECL_FUNCTION_SPECIFIC_OPTIMIZATION for ACCEL_COMPILER
2017-08-03  Tom de Vries  <tom@codesourcery.com>

	PR lto/81430
	* tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): If
	ACCEL_COMPILER, apply finish_options on
	DECL_FUNCTION_SPECIFIC_OPTIMIZATION.

From-SVN: r250852
2017-08-03 11:37:55 +00:00
Tom de Vries
cad136a40b Error out on nvptx for fpatchable-function-entry
2017-08-03  Tom de Vries  <tom@codesourcery.com>

	PR target/81662
	* config/nvptx/nvptx.c (nvptx_option_override): Emit sorry if
	function_entry_patch_area_size > 0.

	* gcc.target/nvptx/patchable_function_entry-default.c: New test.

From-SVN: r250851
2017-08-03 11:18:09 +00:00
Jakub Jelinek
2392baa59e re PR driver/81650 (gcc -m32 mishandles -Walloc-size-larger-than=9223372036854775807)
PR driver/81650
	* calls.c (alloc_max_size): Use HOST_WIDE_INT_UC (10??)
	instead of 10??LU, perform unit multiplication in wide_int,
	don't change alloc_object_size_limit if the limit is larger
	than SSIZE_MAX.

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

From-SVN: r250850
2017-08-03 11:43:11 +02:00
Jakub Jelinek
1f9be5050f re PR tree-optimization/81655 (new test case gcc.dg/tree-ssa/pr81588.c fails on powerpc64)
PR tree-optimization/81655
	PR tree-optimization/81588
	* tree-ssa-reassoc.c (optimize_range_tests_var_bound): Handle also
	the case when ranges[i].low and high are 1 for unsigned type with
	precision 1.

From-SVN: r250849
2017-08-03 11:41:55 +02:00
Paolo Carlini
e5e691a53f re PR c++/71440 (ICE on invalid C++ code in instantiate_type, at cp/class.c:8247)
/cp
2017-08-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71440
	* typeck.c (build_x_unary_op): Avoid pretty-printing constructor /
	destructor as expressions.

/testsuite
2017-08-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/71440
	* g++.dg/template/crash127.C: New.

From-SVN: r250848
2017-08-03 09:26:17 +00:00
Jakub Jelinek
0a734553cc re PR middle-end/81052 (ICE in verify_dominators, at dominance.c:1184)
PR middle-end/81052
	* omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp.
	(pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd.

	* c-c++-common/pr81052.c: New test.

From-SVN: r250847
2017-08-03 10:34:16 +02:00
Prathamesh Kulkarni
96715b4baf tree-vrp.h: Add include guard.
2017-08-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

	* tree-vrp.h: Add include guard.

From-SVN: r250846
2017-08-03 07:42:36 +00:00
Tom de Vries
673aef33be Require alias for gcc.dg/pr56727-2.c
2017-08-03  Tom de Vries  <tom@codesourcery.com>

	* gcc.dg/pr56727-2.c: Require alias.

From-SVN: r250845
2017-08-03 07:08:30 +00:00
Tom de Vries
2a8485f600 Require alloca for gcc.dg/attr-noipa.c
2017-08-03  Tom de Vries  <tom@codesourcery.com>

	* gcc.dg/attr-noipa.c: Require alloca.

From-SVN: r250844
2017-08-03 07:08:19 +00:00
Tom de Vries
8b917598b0 Require label_values for gcc.dg/torture/pr80163.c
2017-08-03  Tom de Vries  <tom@codesourcery.com>

	* gcc.dg/torture/pr80163.c: Require label_values.

From-SVN: r250843
2017-08-03 07:08:01 +00:00
Tom de Vries
4ca8bf919c Skip fpatchable-function-entry tests for nvptx
2017-08-03  Tom de Vries  <tom@codesourcery.com>

	PR target/81662
	* c-c++-common/patchable_function_entry-decl.c: Skip for nvptx.
	* c-c++-common/patchable_function_entry-default.c: Same.
	* c-c++-common/patchable_function_entry-definition.c: Same.

From-SVN: r250842
2017-08-03 07:07:38 +00:00
GCC Administrator
25413b792e Daily bump.
From-SVN: r250841
2017-08-03 00:16:27 +00:00
Yury Gribov
01f5295df1 Added Python implementation of mklog.
From-SVN: r250836
2017-08-02 21:01:08 +00:00
Yury Gribov
e1df0c9134 Renamed original mklog to mklog.pl.
From-SVN: r250835
2017-08-02 20:58:23 +00:00
Ian Lance Taylor
f12e8c3f66 compiler: only finalize embedded fields before finalizing methods
When finalizing the methods of a named struct type, we used to
    finalize all the field types first.  That can fail if the field types
    refer indirectly to the named type.  Change it to just finalize the
    embedded field types first, and the rest of the fields later.
    
    Fixes golang/go#21253
    
    Reviewed-on: https://go-review.googlesource.com/52570

From-SVN: r250832
2017-08-02 16:27:17 +00:00
Uros Bizjak
893e8f7d87 * ChangeLog: Fix my last entry.
From-SVN: r250831
2017-08-02 16:04:48 +02:00
Uros Bizjak
f462948172 re PR target/81644 (ICE in rtl_verify_bb_insn, BBRO pass duplicates BB that ends with flow control insn)
PR target/81644
	* config/i386/i386.md (unspecv): Add UNSPECV_UD2.
	(ud2): New insn pattern.
	* config/i386/i386.c (ix86_expand_epilogue):
	Generate ud2 instead of trap insn.

testsuite/ChangeLog:

	PR target/81644
	* gcc.target/i386/pr81644.c: New test.

From-SVN: r250830
2017-08-02 15:58:08 +02:00
Marek Polacek
5e9fab92d1 re PR other/81667 (trunk/gcc/alloc-pool.h:239: possible missing initialiser ?)
PR other/81667
	* alloc-pool.h (base_pool_allocator): Initialize m_elt_size.

From-SVN: r250829
2017-08-02 13:25:12 +00:00
Tom de Vries
8699462191 Use relative line number in gcc.dg/Walloca-14.c
2017-08-02  Tom de Vries  <tom@codesourcery.com>

	* gcc.dg/Walloca-14.c: Use relative line number.

From-SVN: r250828
2017-08-02 13:19:30 +00:00
Uros Bizjak
9501fd4b59 funcspec-56.inc (no_3dnowa): Properly test "no-3dnowa" target attribute.
* gcc.target/i386/funcspec-56.inc (no_3dnowa): Properly
	test "no-3dnowa" target attribute.

From-SVN: r250826
2017-08-02 14:59:52 +02:00
David Edelsohn
8a0e622411 Add PR number.
From-SVN: r250825
2017-08-02 08:45:55 -04:00
David Edelsohn
2e6af1b892 * xcoff.c (xcoff_process_linenos): Initialize incl to NULL.
From-SVN: r250824
2017-08-02 08:44:54 -04:00
Tom de Vries
72270bb55c Add missing probabilities in nvptx_lock{less,full}_update
2017-08-02  Tom de Vries  <tom@codesourcery.com>
	    Cesar Philippidis  <cesar@codesourcery.com>

	* config/nvptx/nvptx.c (nvptx_lockless_update, nvptx_lockfull_update):
	Add missing edge probabilities.

Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>

From-SVN: r250823
2017-08-02 12:11:50 +00:00
Marek Polacek
8a6eab343a re PR c/81448 (False positive -Werror=multistatement-macros in openssl)
PR c/81448
	PR c/81306
	* c-warn.c (warn_for_multistatement_macros): Prevent bogus
	warnings.  Avoid walking MACRO_MAP_LOCATIONS.						     

	* c-c++-common/Wmultistatement-macros-13.c: New test.

From-SVN: r250822
2017-08-02 11:56:54 +00:00
Marek Polacek
f7b6353a7f re PR c/81289 (ICE in libcpp/line-map.c)
PR c/81289
	* c-parser.c (c_parser_unary_expression): Use set_error.

	* gcc.dg/noncompile/pr81289.c: New test.

From-SVN: r250821
2017-08-02 11:50:16 +00:00
Uros Bizjak
829c98a069 pr25967-1.c: Delete
* gcc.dg/guality/pr25967-1.c: Delete
        * gcc.dg/guality/pr25967-2.c: Delete
        * gcc.dg/guality/pr25967-3.c: Rename to pr25967-1.c.
        * gcc.dg/guality/pr25967-4.c: Rename to pr25967-2.c.

        * gcc.dg/torture/pr25967-1.c: Delete
        * gcc.dg/torture/pr25967-2.c: Delete
        * gcc.dg/torture/pr25967-3.c: Rename to pr25967-1.c.
        * gcc.dg/torture/pr25967-4.c: Rename to pr25967-2.c.

From-SVN: r250820
2017-08-02 13:19:58 +02:00
Tamar Christina
5c22bb4836 aarch64.c (aarch64_reinterpret_float_as_int): Correct endianness.
2017-08-02  Tamar Christina  <tamar.christina@arm.com>

	* config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
	Correct endianness.

From-SVN: r250818
2017-08-02 08:55:59 +00:00
Jakub Jelinek
e4f0733af4 re PR c++/81640 (ICE in lookup_fnfields_slot_nolazy w/ -Wshadow=compatible-local)
PR c++/81640
	* call.c (build_user_type_conversion_1): Only call
	lookup_fnfields_slot if totype is CLASS_TYPE_P.

	* g++.dg/warn/Wshadow-compatible-local-2.C: New test.

From-SVN: r250816
2017-08-02 09:28:21 +02:00
Jakub Jelinek
349721b7de re PR middle-end/79499 (ICE in rtl_verify_bb_insns, at cfgrtl.c:2661)
PR middle-end/79499
	* function.c (thread_prologue_and_epilogue_insns): Determine blocks
	for find_many_sub_basic_blocks bitmap by looking up BLOCK_FOR_INSN
	of first NONDEBUG_INSN_P in each of the split_prologue_seq and
	prologue_seq sequences - if any.

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

From-SVN: r250814
2017-08-02 09:13:25 +02:00
Richard Biener
04199738b4 tree-vect-stmts.c (vectorizable_store): Perform vector extracts via vectors if supported...
2017-08-02  Richard Biener  <rguenther@suse.de>

	* tree-vect-stmts.c (vectorizable_store): Perform vector extracts
	via vectors if supported, integer extracts via punning if supported
	or otherwise vector extracts.

From-SVN: r250813
2017-08-02 06:57:12 +00:00
Richard Biener
232b2c6e1d tree-ssa-pre.c (bitmap_insert_into_set_1): Remove and inline into ...
2017-08-02  Richard Biener  <rguenther@suse.de>

	* tree-ssa-pre.c (bitmap_insert_into_set_1): Remove and inline
	into ...
	(bitmap_insert_into_set): ... this.

From-SVN: r250812
2017-08-02 06:52:26 +00:00
Richard Biener
77eefb7122 re PR tree-optimization/81633 (Incorrect floating point result with tree vectoriser)
2017-08-02  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81633
	Revert
	2015-08-17  Alan Hayward  <alan.hayward@arm.com>

	PR tree-optimization/71752
	* tree-vect-slp.c (vect_get_slp_defs): Handle null operands.

	* gcc.dg/vect/pr81633.c: New testcase.

From-SVN: r250811
2017-08-02 06:38:36 +00:00
GCC Administrator
cade047f19 Daily bump.
From-SVN: r250810
2017-08-02 00:16:20 +00:00
Joseph Myers
ffbc85cb78 * fr.po: Update.
From-SVN: r250805
2017-08-02 00:44:12 +01:00
Daniel Santos
5d9d834de2 [i386] Remove ix86_frame::outlined_save_offset and machine_function::call_ms2sysv_pad_out
ix86_frame::outlined_save_offset isn't used and
machine_function::call_ms2sysv_pad_out is an ineffective strategy.

2017-08-01  Daniel Santos  <daniel.santos@pobox.com>

        * config/i386/i386.h (ix86_frame::outlined_save_offset): Remove field.
        (machine_function::call_ms2sysv_pad_out): Remove field.
        * config/i386/i386.c (xlogue_layout::get_stack_space_used): Modify.
        (ix86_compute_frame_layout): Likewise.

From-SVN: r250803
2017-08-01 22:33:16 +00:00
Eric Botcazou
9f2cb25e3f c-ada-spec.c (has_static_fields): Look only into fields.
* c-ada-spec.c (has_static_fields): Look only into fields.
	(dump_generic_ada_node): Small tweak.
	(dump_nested_types): Look only into fields.
	(print_ada_declaration): Look only into methods.  Small tweak.
	(print_ada_struct_decl): Look only into fields.  Use DECL_VIRTUAL_P.

From-SVN: r250802
2017-08-01 22:15:32 +00:00
H.J. Lu
73380438c9 i386: Add more naked attribute tests
Add some tests for implementing interrupt handlers with naked attribute
and without asm statements.

	* gcc.dg/guality/pr25967-3.c: New test.
	* gcc.dg/guality/pr25967-4.c: Likewise.
	* gcc.dg/torture/pr25967-3.c: Likewise.
	* gcc.dg/torture/pr25967-4.c: Likewise.

From-SVN: r250800
2017-08-01 14:39:51 -07:00
H.J. Lu
760f74c21b i386: Add some naked attribute tests
Add some tests for implementing interrupt handlers with naked attribute.

	* gcc.dg/guality/pr25967-1.c: New test.
	* gcc.dg/guality/pr25967-2.c: Likewise.
	* gcc.dg/torture/pr25967-1.c: Likewise.
	* gcc.dg/torture/pr25967-2.c: Likewise.

From-SVN: r250799
2017-08-01 14:07:04 -07:00