156761 Commits

Author SHA1 Message Date
Jan Hubicka
10c98117e8 i386.c (ia32_multipass_dfa_lookahead): Default to issue rate for post-reload scheduling.
* i386.c (ia32_multipass_dfa_lookahead): Default to issue rate
	for post-reload scheduling.

From-SVN: r253453
2017-10-05 16:29:42 +00:00
Tamar Christina
592fbfb5fb slp-perm-9.c: Use vect_sizes_16B_8B.
gcc/testsuite/
2017-10-05  Tamar Christina  <tamar.christina@arm.com>

	* gcc.dg/vect/slp-perm-9.c: Use vect_sizes_16B_8B.
	* lib/target-supports.exp (vect_sizes_16B_8B): New.

gcc/
2017-10-05  Tamar Christina  <tamar.christina@arm.com>

	* doc/sourcebuild.texi (vect_sizes_16B_8B, vect_sizes_32B_16B): New.

From-SVN: r253452
2017-10-05 15:17:39 +00:00
Tamar Christina
0322303e26 vect-align-1.c: Fix vect_hw_misalign condition.
2017-09-28  Tamar Christina  <tamar.christina@arm.com>

	* gcc.dg/vect/vect-align-1.c: Fix vect_hw_misalign condition.
	* gcc.dg/vect/vect-align-2.c: Likewise.
	* gcc.dg/vect/vect-multitypes-1.c: Likewise

From-SVN: r253451
2017-10-05 15:13:31 +00:00
Jan Hubicka
0086058964 i386.c (znver1_cost): Set branch_cost to 3 (instead of 2) to improve monte carlo in scimark.
* i386.c (znver1_cost): Set branch_cost to 3 (instead of 2)
	to improve monte carlo in scimark.

From-SVN: r253449
2017-10-05 15:00:25 +00:00
Jan Hubicka
a813c28053 i386.c (ix86_size_cost, [...]): Set reassociation width to 1.
* i386.c (ix86_size_cost, i386_cost, i486_cost, pentium_cost,
	lakemont_cost, pentiumpro_cost, geode_cost, k6_cost,
	athlon_cost, k8_cost, amdfam10_cost, btver1_cost, btver2_cost,
	pentium4_cost, nocona_cost): Set reassociation width to 1.
	(bdver1_cost, bdver2_cost, bdver3_cost, bdver4_cost): Set reassociation
	width to 2 for fp operations and 1 otherwise.
	(znver1_cost): Set scalar reassoc width to 4 and vector to 3 and 6
	for int and fp.
	(atom_cost): Set reassociation width to 2.
	(slm_cost, generic_cost): Set fp reassociation width to 2 and 1 otherwise.
	(intel_cost): Set fp reassociation width to 4 and 1 otherwise.
	(core_cost): Set fp reassociation width to 4 and vector to 2.
	(ix86_reassociation_width): Rewrite using cost table; special case
	plus/minus on Zen; honor X86_TUNE_SSE_SPLIT_REGS
	and TARGET_AVX128_OPTIMAL.
	* i386.h (processor_costs): Add
	reassoc_int, reassoc_fp, reassoc_vec_int, reassoc_vec_fp.
	(TARGET_VECTOR_PARALLEL_EXECUTION, TARGET_REASSOC_INT_TO_PARALLEL,
	TARGET_REASSOC_FP_TO_PARALLEL): Remove.
	* x86-tune.def (X86_TUNE_REASSOC_INT_TO_PARALLEL): Remove.
	(X86_TUNE_REASSOC_FP_TO_PARALLEL): Remove.
	(X86_TUNE_VECTOR_PARALLEL_EXECUTION):  Remove.

From-SVN: r253448
2017-10-05 14:56:32 +00:00
Nathan Sidwell
807e3be2b8 Re: [PATCH] C++ warning on vexing parse
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00249.html
	gcc/cp/
	Warn on MVP declarations
	* cp-tree.h (struct cp_declarator): Add parenthesized field.
	* decl.c (grokdeclarator): Warn about unnecessary parens.
	* parser.c (make_declarator): Init parenthesized field.
	(cp_parser_direct_declarator): Set parenthesized field.

	gcc/
	* doc/invoke.texi (Wparentheses): Document C++ MVP behaviour.

	gcc/testsuite/
	* g++.dg/warn/mvp.C: New.

From-SVN: r253446
2017-10-05 13:27:37 +00:00
Nathan Sidwell
87e3d7cfb5 [C++ PATCH] Kill IDENTIFIER_GLOBAL_VALUE
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00239.html
	Kill IDENTIFIER_GLOBAL_VALUE, SET_IDENTIFIER_GLOBAL_VALUE
	* cp-tree.h (IDENTIFIER_GLOBAL_VALUE,
	SET_IDENTIFIER_GLOBAL_VALUE): Delete.
	* name-lookup.h (set_global_binding): Remove NAME parm.
	(get_global_binding): New inline fn.
	* name-lookup.c (set_global_binding): Remove NAME parm. Adjust.
	(identifier_global_value): Move to ...
	* cp-objcp-common.c (identifier_global_value): ... here.
	* class.c (build_ctor_vtbl_group, build_vtbl_initializer): Adjust.
	* decl.c (record_builtin_type, expand_static_init,
	grokdeclarator): Adjust.
	* decl2.c (get_guard, get_local_tls_init_fn, get_tls_init_fn,
	get_tls_wrapper_fn, maybe_warn_sized_delete): Adjust.
	* except.c (declare_library_fn, build_throw): Adjust.
	* init.c (throw_bad_array_length): Adjust.
	* rtti.c (throw_bad_cast, throw_bad_typeid, get_tinfo_decl): Adjust.

From-SVN: r253444
2017-10-05 12:10:55 +00:00
Tamar Christina
9eabdc5e16 arm.c (arm_test_fpu_data): New.
2017-10-05  Tamar Christina  <tamar.christina@arm.com>

	* config/arm/arm.c (arm_test_fpu_data): New.
	(arm_run_selftests): Call arm_test_fpu_data.

From-SVN: r253443
2017-10-05 11:38:06 +00:00
H.J. Lu
bf4df9e6b4 Add sanitizer_linux_x86_64.lo if __x86_64__ is defined by $CC
Since size of "void *" is 4 bytes for x32, check if __x86_64__ is defined
by $CC, instead of

if test x$ac_cv_sizeof_void_p = x8; then

to decide wether sanitizer_linux_x86_64.lo should be used.

	PR sanitizer/82379
	* configure.tgt (SANITIZER_COMMON_TARGET_DEPENDENT_OBJECTS): Set
	to sanitizer_linux_x86_64.lo if __x86_64__ is defined by $CC.

From-SVN: r253441
2017-10-05 03:39:32 -07:00
Nathan Sidwell
7a852b59df Re: [C++ PATCH] Move mangling alias out of ::
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00230.html
	* decl2.c (record_mangling): Fix spello and formatting from
	previous patch.

From-SVN: r253440
2017-10-05 10:16:38 +00:00
Tom de Vries
8fe3ed4c10 Fix libgomp.oacc-c-c++-common/{loop-red-g-1,routine-g-1}.c for non-nvidia devices
2017-10-05  Tom de Vries  <tom@codesourcery.com>

	* testsuite/libgomp.oacc-c-c++-common/loop-red-g-1.c (main): Remove
	vector_length(32) clause from acc parallel directive.
	* testsuite/libgomp.oacc-c-c++-common/routine-g-1.c (main): Same.

From-SVN: r253439
2017-10-05 08:31:46 +00:00
Jakub Jelinek
05e1eaeb1b pr82374.c (SIZE): Change from 1G to 1M to make it ilp32 friendly.
* gcc.dg/gomp/pr82374.c (SIZE): Change from 1G to 1M to make it ilp32
	friendly.

From-SVN: r253438
2017-10-05 10:09:34 +02:00
Richard Biener
bb61e6e3d3 id-17.f: Fix typo.
2017-10-05  Richard Biener  <rguenther@suse.de>

	* gfortran.dg/graphite/id-17.f: Fix typo.
	* gfortran.dg/graphite/id-19.f: Likewise.
	* gfortran.dg/graphite/pr29832.f90: Likewise.
	* gfortran.dg/graphite/pr42326-1.f90: Likewise.
	* gfortran.dg/graphite/pr42326.f90: Likewise.
	* gfortran.dg/graphite/pr68550-2.f90: Likewise.
	* gfortran.dg/graphite/run-id-2.f90: Likewise.
	* gfortran.dg/graphite/run-id-3.f90: Likewise.

From-SVN: r253437
2017-10-05 07:45:42 +00:00
GCC Administrator
5f8c28a6ce Daily bump.
From-SVN: r253436
2017-10-05 00:16:18 +00:00
Paolo Carlini
5b93c0eede re PR c++/80471 ((gcc extension) Forwarding-reference auto function parameters do not follow the same rules as template functions or generic lambdas)
2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80471
	* g++.dg/cpp1y/pr80471.C: New.

From-SVN: r253432
2017-10-04 21:25:20 +00:00
Paolo Carlini
25139006e5 re PR c++/78131 (Inconsistent evaluation for constexpr lambdas in templates between static_assert, if constexpr(…) and constexpr variables)
2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/78131
	* g++.dg/cpp1z/constexpr-lambda17.C: New.

From-SVN: r253431
2017-10-04 20:58:52 +00:00
Paolo Carlini
968e56bf7f re PR c++/78018 ([C++14] "internal compiler error: Segmentation fault" with templates and lambdas)
2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/78018
	* g++.dg/cpp1y/lambda-generic-78018.C: New.

From-SVN: r253430
2017-10-04 20:34:03 +00:00
Nathan Sidwell
a1440fa8fa [PATCH] remove some unneeded parens
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00200.html
	* toplev.c (toplev::main): Remove excess parens on pretty_printer
	decl.
	* caller-save.c (insert_save): Remove excess parens on TO_SAVE parm.

From-SVN: r253427
2017-10-04 17:58:28 +00:00
Nathan Sidwell
e07b83663e [C++ PATCH] give builtin types consistent name
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00201.html
	Give builtin types the correct name.
	* name-lookup.c (set_global_binding): Assert name is DECL_NAME.
	* decl.c (record_builtin_type): Reimplement, use new TYPE_DECL for
	rname.

From-SVN: r253426
2017-10-04 17:54:59 +00:00
Jason Merrill
d21f2166b0 PR c++/82406 - C++17 error with noexcept function type
* g++.dg/ext/attrib54.C: New.

From-SVN: r253425
2017-10-04 13:47:51 -04:00
Paolo Carlini
fb4ccfed86 re PR c++/71946 (asm in toplevel lambda function rejected)
/cp
2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>
	    Andrew Pinski  <apinski@cavium.com>

	PR c++/71946
	* parser.c (cp_parser_lambda_body): Set parser->in_function_body.

/testsuite
2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>
	    Andrew Pinski  <apinski@cavium.com>

	PR c++/71946
	* g++.dg/cpp0x/lambda/lambda-asm1.C: New.
	* g++.dg/cpp0x/lambda/lambda-stmtexpr1.C: Likewise.

Co-Authored-By: Andrew Pinski <apinski@cavium.com>

From-SVN: r253423
2017-10-04 17:21:21 +00:00
Sudakshina Das
ab6501d713 [PATCH][AArch64] Add BIC-imm and ORR-imm SIMD pattern
This patch adds the support for BIC (vector, immediate) and
ORR (vector, immediate) SIMD patterns to the AArch64 backend.

Committed on behalf of Sudi Das.

Reviewed-by: Richard Earnshaw <Richard.Earnshaw@arm.com>
Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>

gcc/

	* config/aarch64/aarch64-protos.h (enum simd_immediate_check): New
	check type for aarch64_simd_valid_immediate.
	(aarch64_output_simd_mov_immediate): Update prototype.
	(aarch64_simd_valid_immediate): Update prototype.
	* config/aarch64/aarch64-simd.md (orr<mode>3): modified pattern to add
	support for ORR-immediate.
	(and<mode>3): modified pattern to add support for BIC-immediate.
	* config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Function
	now checks for valid immediate for BIC and ORR based on new enum
	argument.
	(aarch64_output_simd_mov_immediate): Function now used to output
	BIC/ORR imm as well based on new enum argument.
	* config/aarch64/constraints.md (Do): New vector immediate constraint.
	(Db) : Likewise.
	* config/aarch64/predicates.md (aarch64_reg_or_orr_imm): New predicate.
	(aarch64_reg_or_bic_imm): Likewise.

gcc/testsuite/

	* gcc.target/aarch64/bic_imm_1.c: New test.
	* gcc.target/aarch64/orr_imm_1.c: Likewise.

From-SVN: r253422
2017-10-04 16:59:40 +00:00
Nathan Sidwell
b419102c12 [C++ PATCH] Move mangling alias out of ::
https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00199.html
	gcc/cp/
	Move mangling aliases out of global namespace.
	* cp-tree.h (record_mangling): New.
	(maybe_remove_implicit_alias): Delete.
	* decl2.c (mangled_decls): New hash map.
	(generate_mangling_alias): Reimplement using mangled_decls.
	(record_mangling): New.
	* mangle.c (decl_implicit_alias_p,
	maybe_remove_implicit_alias): Delete.
	(mangle_decl): Use record_mangling.
	* name-lookup.c (supplement_binding_1): Remove
	maybe_remove_implicit_alias check.

	* call.c (convert_arg_to_ellipsis): Correct comment about passing
	by reference.

	gcc/testsuite/
	* g++.dg/abi/mangle41.C: Adjust diagnostics.

	libcc1/
	* libcp1plugin.cc (supplement_binding): Don't use
	maybe_remove_implicit_alias.

From-SVN: r253421
2017-10-04 16:55:54 +00:00
Andreas Krebbel
baf20d8df2 S/390: Fix mode in vector merge pattern.
vec_unpacks_hi_v4sf/vec_unpacks_lo_v4sf expand vec_mergeh and vec_mergel
patterns also for z13 with V4SF modes so the patterns should better
accept this.  Fixed by changing the mode iterator to V_128_NOSINGLE
which accepts V4SF unconditionally.

gcc/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/vx-builtins.md ("vec_mergeh<mode>")
	("vec_mergel<mode>"): Change mode iterator to V_128_NOSINGLE.

From-SVN: r253420
2017-10-04 16:43:09 +00:00
Wilco Dijkstra
748d9390b9 Revert r253399:
PR rtl-optimization/82396
	* haifa-sched.c (autopref_multipass_init): Simplify
	initialization.
	(autopref_rank_data): Simplify sort order.
	* sched-int.h (autopref_multipass_data_): Remove
	multi_mem_insn_p, min_offset and max_offset.

From-SVN: r253419
2017-10-04 16:40:44 +00:00
Jakub Jelinek
420db57431 re PR c++/82373 (syntax error in error message)
PR c++/82373
	* error.c (dump_function_decl): If show_return, call dump_type_suffix
	on the same return type dump_type_prefix has been called on.

	* g++.dg/cpp1y/pr82373.C: New test.

From-SVN: r253418
2017-10-04 18:15:36 +02:00
Petr Ovtchenkov
4e91452412 2017-10-04 Petr Ovtchenkov <ptr@void-ptr.info>
François Dumont  <fdumont@gcc.gnu.org>

	* include/bits/streambuf_iterator.h
	(istreambuf_iterator<>::operator*()): Do not capture iterator state
	in Debug assertion.
	(istreambuf_iterator<>::operator++()): Likewise and remove _M_sbuf check.
	(istreambuf_iterator<>::operator++(int)): Likewise.
	(istreambuf_iterator<>::_M_get()): Remove _M_c assignment.
	(istreambuf_iterator<>::_S_is_eof()): New.
	(istreambuf_iterator<>::_M_at_eof()): Adapt, use latter.
	(find(istreambuf_iterator<>, istreambuf_iterator<>, _CharT)):
	Return an iterator with _M_c set to eof to capture streambuf state
	on evaluation.
	(testsuite/24_iterators/istreambuf_iterator/2.cc): Add checks.

Co-Authored-By: François Dumont <fdumont@gcc.gnu.org>

From-SVN: r253417
2017-10-04 16:15:18 +00:00
Jason Merrill
6411847fcf PR c++/81525 - broken handling of auto in generic lambda.
* pt.c (tsubst_decl) [VAR_DECL]: Use strip_innermost_template_args.

From-SVN: r253414
2017-10-04 11:37:09 -04:00
David Malcolm
8139a48e67 C: underline parameters in mismatching function calls
In r253096
  ("C++: underline parameters in mismatching function calls"
  aka 5d78d423a5f7a1d135c7bb678e82007678d1313c
    https://gcc.gnu.org/ml/gcc-patches/2017-09/msg01546.html )
I updated the C++ FE's handling of mismatched types in function calls
so that it underlines the pertinent param of the callee, rather than
just the function name.

The following patch does the same for the C frontend.

Given e.g. this type mismatch:

  extern int callee (int one, const char *two, float three);

  int caller (int first, int second, float third)
  {
    return callee (first, second, third);
  }

the C FE currently emits (trunk):

  test.c: In function 'caller':
  test.c:5:25: warning: passing argument 2 of 'callee' makes pointer from
  integer without a cast [-Wint-conversion]
     return callee (first, second, third);
                           ^~~~~~
  test.c:1:12: note: expected 'const char *' but argument is of type 'int'
   extern int callee (int one, const char *two, float three);
              ^~~~~~

whereas with this patch the note underlines the pertinent param of
the callee:

  test.c: In function 'caller':
  test.c:5:25: warning: passing argument 2 of 'callee' makes pointer from
  integer without a cast [-Wint-conversion]
     return callee (first, second, third);
                           ^~~~~~
  test.c:1:41: note: expected 'const char *' but argument is of type 'int'
   extern int callee (int one, const char *two, float three);
                               ~~~~~~~~~~~~^~~

making the problem more obvious to the user.

As with the C++ patch, the patch:

(a) updates the locations of the params to cover the range of all
of their tokens, putting the caret on the first character of the
param name (if present), otherwise at the start of the first token
(doing so requires adding a last_token_location to the c_parser, so
we can determine the location of the last consumed token).

(b) updates the "note" to use the param location, rather than the
fndecl location

gcc/c/ChangeLog:
	* c-decl.c (push_parm_decl): Store c_parm's location into the
	PARAM_DECL.
	(build_c_parm): Add "loc" param and store it within the c_parm.
	* c-parser.c (struct c_parser): Add "last_token_location" field.
	(c_parser_consume_token): Store location of the token into the
	new field.
	(c_parser_declaration_or_fndef): Store params into DECL_ARGUMENTS
	when handling a FUNCTION_DECL, if it doesn't already have them.
	(c_parser_parameter_declaration): Generate a location for the
	parameter, and pass it to the call to build_c_parm.
	* c-tree.h (struct c_parm): Add field "loc".
	(build_c_parm): Add location_t param.
	* c-typeck.c (get_fndecl_argument_location): New function.
	(inform_for_arg): New function.
	(convert_for_assignment): Use inform_for_arg when dealing with
	ic_argpass.

gcc/testsuite/ChangeLog:
	* gcc.dg/diagnostic-range-bad-called-object.c: Update expected
	underlining for param.
	* gcc.dg/param-type-mismatch.c: Update expected results to reflect
	highlighting of parameters; add test coverage for trivial
	parameter decls, and for callback parameters.
	* gcc.dg/pr68533.c: Update location of two errors to reflect
	location of params.

From-SVN: r253411
2017-10-04 14:10:59 +00:00
Nathan Sidwell
bed8a1e4d6 call.c (convert_arg_to_ellipsis): Correct comment about passing by reference.
* call.c (convert_arg_to_ellipsis): Correct comment about passing
	by reference.

From-SVN: r253410
2017-10-04 14:06:41 +00:00
David Malcolm
6069fe7287 jit: implement gcc_jit_context_new_rvalue_from_vector
This patch implements a new API entrypoint:

/* Build a vector rvalue from an array of elements.

   "vec_type" should be a vector type, created using gcc_jit_type_get_vector.

   This API entrypoint was added in LIBGCCJIT_ABI_10; you can test for its
   presence using
     #ifdef LIBGCCJIT_HAVE_gcc_jit_context_new_rvalue_from_vector
*/
extern gcc_jit_rvalue *
gcc_jit_context_new_rvalue_from_vector (gcc_jit_context *ctxt,
                                        gcc_jit_location *loc,
                                        gcc_jit_type *vec_type,
                                        size_t num_elements,
                                        gcc_jit_rvalue **elements);


gcc/jit/ChangeLog:
	* docs/cp/topics/expressions.rst (Vector expressions): New
	section.
	* docs/topics/compatibility.rst (LIBGCCJIT_ABI_10): New ABI tag.
	* docs/topics/expressions.rst (Vector expressions): New section.
	* docs/topics/types.rst (gcc_jit_type_get_vector): Add link to
	gcc_jit_context_new_rvalue_from_vector.
	* jit-common.h (gcc::jit:recording::vector_type): New forward
	decl.
	* jit-playback.c
	(gcc::jit::playback::context::new_rvalue_from_vector): New method.
	* jit-playback.h
	(gcc::jit::playback::context::new_rvalue_from_vector): New method.
	* jit-recording.c: In namespace gcc::jit::
	(class comma_separated_string): New class.
	(comma_separated_string::comma_separated_string): New ctor,
	adapted from recording::call::make_debug_string.
	(comma_separated_string::~comma_separated_string): New dtor.
	In namespace gcc::jit::recording::
	(context::new_rvalue_from_vector): New method.
	(type::get_vector): Update for renaming of memento_of_get_vector.
	(class memento_of_get_vector): Rename to...
	(class vector_type): ..this.
	(memento_of_new_rvalue_from_vector::memento_of_new_rvalue_from_vector):
	New ctor.
	(memento_of_new_rvalue_from_vector::replay_into): New method.
	(memento_of_new_rvalue_from_vector::visit_children): New method.
	(memento_of_new_rvalue_from_vector::make_debug_string): New
	method.
	(memento_of_new_rvalue_from_vector::write_reproducer): New method.
	(call::make_debug_string): Split out arg-printing code into ctor
	for comma_separated_string.
	* jit-recording.h: In namespace gcc::jit::recording::
	(context::new_rvalue_from_vector): New method.
	(type::dyn_cast_vector_type): New virtual function.
	(class memento_of_get_vector): Rename to...
	(class vector_type): ...this.
	(vector_type::unqualified): Remove this vfunc override in favor
	of...
	(vector_type::get_element_type): ...this new method.
	(vector_type::get_num_units): New method.
	(vector_type::dyn_cast_vector_type): New vfunc override.
	(class memento_of_new_rvalue_from_vector): New class.
	* libgccjit++.h (gccjit::context::new_rvalue): Add overload for
	vector of rvalue.
	* libgccjit.c (gcc_jit_context_new_binary_op): Strip off type
	qualifications when checking that both operands have same type.
	(gcc_jit_context_new_rvalue_from_vector): New API entrypoint.
	* libgccjit.h
	(LIBGCCJIT_HAVE_gcc_jit_context_new_rvalue_from_vector): New
	macro.
	(gcc_jit_context_new_rvalue_from_vector): New API entrypoint.
	* libgccjit.map (LIBGCCJIT_ABI_10): New ABI tag.

gcc/testsuite/ChangeLog:
	* jit.dg/test-expressions.c (make_test_of_vectors): New function.
	(create_code): Call it.
	* jit.dg/test-vector-rvalues.cc: New test case.

From-SVN: r253409
2017-10-04 13:41:01 +00:00
Andreas Krebbel
4f15b6a282 New target check: vect_peeling_profitable
gcc/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* doc/sourcebuild.texi: Document vect_peeling_profitable.

gcc/testsuite/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* g++.dg/vect/slp-pr56812.cc: xfail for targets which don't want
	vector loop peeling.
	* lib/target-supports.exp (check_effective_target_vect_peeling_profitable):
	New proc.

From-SVN: r253407
2017-10-04 12:00:34 +00:00
Andreas Krebbel
30d027da83 New target check for double<->int conversions
gcc/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* doc/sourcebuild.texi: Document vect_intdouble_cvt and
	vect_doubleint_cvt.

gcc/testsuite/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.dg/vect/pr66251.c: Replace vect_floatint_cvt with
	vect_doubleint_cvt and vect_intfloat_cvt with vect_intdouble_cvt.
	* gcc.dg/vect/vect-floatint-conversion-2.c: Replace
	vect_floatint_cvt with vect_doubleint_cvt.
	* gcc.dg/vect/vect-intfloat-conversion-3.c: Replace
	vect_intfloat_cvt with vect_intdouble_cvt.
	* gfortran.dg/vect/pr60510.f: Require vect_intdouble_cvt.
	* gfortran.dg/vect/vect-8.f90: Make number of vectorized loops
	depend on vect_intdouble_cvt.
	* lib/target-supports.exp
	(check_effective_target_vect_doubleint_cvt)
	(check_effective_target_vect_intdouble_cvt): New procs.

From-SVN: r253406
2017-10-04 11:59:30 +00:00
Andreas Krebbel
c059a92ecc New target check: vect_long_mult
We don't have a 64 bit vector integer multiply on z.  Add a specific
check for that.

gcc/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* doc/sourcebuild.texi: Document vect_long_mult.

gcc/testsuite/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.dg/vect/pr60656.c: Check vect_long_mult.
	* lib/target-supports.exp (check_effective_target_vect_long_mult):
	New proc.

From-SVN: r253405
2017-10-04 11:58:22 +00:00
Andreas Krebbel
a46461133e Testcases using dg-options require at least -mzarch.
Testcases which override the vect default options using dg-options
need at least -mzarch on S/390 32 bit.

gcc/testsuite/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gfortran.dg/vect/fast-math-mgrid-resid.f: Use -mzarch on S/390.
	* gfortran.dg/vect/pr77848.f: Likewise.

From-SVN: r253404
2017-10-04 11:57:16 +00:00
Andreas Krebbel
2641277312 Enable vect_float with S/390 VXE and adjust testcases
The target supports routines provide vect_double and vect_float but
these do not appear to be used consequently in the vect testcases.
With z13 we only have support for vector double but with z14 also for
vector float.  This patch adds vect_float to the testcases using the
float data type and make the vect_float target check to return 1 only
on z14.

gcc/testsuite/ChangeLog:

2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* lib/target-supports.exp (check_effective_target_vect_float):
	Return 1 being on a S/390 with VXE.
	* gcc.dg/vect/pr31699.c: Require vec_float.
	* gcc.dg/vect/pr61194.c: Likewise.
	* gcc.dg/vect/pr65947-10.c: Likewise.
	* gcc.dg/vect/pr66142.c: Likewise.
	* gcc.dg/vect/slp-10.c: Likewise.
	* gcc.dg/vect/slp-11c.c: Likewise.
	* gcc.dg/vect/slp-12b.c: Likewise.
	* gcc.dg/vect/slp-18.c: Likewise.
	* gcc.dg/vect/slp-33.c: Likewise.
	* gcc.dg/vect/slp-cond-2-big-array.c: Likewise.
	* gcc.dg/vect/slp-cond-2.c: Likewise.
	* gcc.dg/vect/vect-cond-10.c: Likewise.
	* gcc.dg/vect/vect-cond-8.c: Likewise.
	* gcc.dg/vect/vect-cond-9.c: Likewise.
	* gcc.dg/vect/vect-float-extend-1.c: Likewise.
	* gcc.dg/vect/vect-float-truncate-1.c: Likewise.

From-SVN: r253403
2017-10-04 11:56:28 +00:00
Thomas Schwinge
ebb4badd5e Adjust test cases for attributes propagation changes for OMP outlined regions
PR tree-optimization/82374
	* c-c++-common/goacc/kernels-double-reduction-n.c: Adjust for
	attributes propagation changes for OMP outlined regions.
	* c-c++-common/goacc/kernels-double-reduction.c: Likewise.
	* c-c++-common/goacc/kernels-reduction.c: Likewise.

From-SVN: r253402
2017-10-04 13:13:24 +02:00
Richard Sandiford
f95810b50b PR82413: Mismatched precisions in build_range_check
build_range_check explicitly allows LOW and HIGH to be a different type
from EXP, so we need to use w::to_widest when comparing a value based on
HIGH with a value based on EXP's type.

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

gcc/
	PR tree-optimization/82413
	* fold-const.c (build_range_check): Use widest_int when comparing
	the maximum ETYPE value with HIGH.

gcc/testsuite/
	PR tree-optimization/82413
	* g++.dg/pr82413.C: New test.

From-SVN: r253401
2017-10-04 10:50:19 +00:00
Paul Thomas
707905d077 re PR fortran/60458 (Error message on associate: deferred type parameter and requires either the pointer or allocatable attribute)
2017-10-04  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/60458
	PR fortran/77296
	* resolve.c (resolve_assoc_var): Deferred character type
	associate names must not receive an integer conatant length.
	* symbol.c (gfc_is_associate_pointer): Deferred character
	length functions also require an associate pointer.
	* trans-decl.c (gfc_get_symbol_decl): Deferred character
	length functions or derived type components require the assoc
	name to have variable string length.
	* trans-stmt.c (trans_associate_var): Set the string length of
	deferred string length associate names. The address expression
	is not needed for allocatable, pointer or dummy targets. Change
	the comment about defered string length targets.

2017-10-04  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/77296
	* gfortran.dg/associate_32.f03 : New test.

From-SVN: r253400
2017-10-04 10:43:45 +00:00
Wilco Dijkstra
3e3d1b2326 Fix PR82396: qsort comparator non-negative on sorted output
r253236 broke AArch64 bootstrap. Earlier revision r253071 changed scheduling
behaviour on AArch64 as autopref scheduling no longer checks the base.

This patch fixes the bootstrap failure and cleans up autopref scheduling.
The code is greatly simplified.  Sort accesses on the offset first, and
only if the offsets are the same fall back to other comparisons in
rank_for_schedule.  This doesn't at all restore the original behaviour
since we no longer compare the base address, but it now defines a total
sorting order.  More work will be required to improve the sorting so
that only loads/stores with the same base are affected.

    gcc/
        PR rtl-optimization/82396
        * haifa-sched.c (autopref_multipass_init): Simplify
        initialization.
        (autopref_rank_data): Simplify sort order.
        * sched-int.h (autopref_multipass_data_): Remove
        multi_mem_insn_p, min_offset and max_offset.

From-SVN: r253399
2017-10-04 10:27:26 +00:00
Tom de Vries
26596ee50d Fix openacc float reduction testcases
2017-10-04  Tom de Vries  <tom@codesourcery.com>

	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c
	(main): Reduce sum of arr elements.  Assert that hres is exactly
	representable in 32-bit floating point.
	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c
	(main): Reduce sum of arr elements.  Assert that hres and hmres are
	exactly representable in 32-bit floating point.
	* testsuite/libgomp.oacc-c-c++-common/reduction-7.c (gwv_np_4): Same.

From-SVN: r253398
2017-10-04 08:39:09 +00:00
Paolo Carlini
8bca3f592c re PR c++/78816 ([c++14] Static auto variable usage in generic/variadic lambda fails to compile)
2017-10-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/78816
	* g++.dg/cpp1y/lambda-generic-variadic6.C: New.

From-SVN: r253397
2017-10-04 08:34:40 +00:00
Jakub Jelinek
8a8e744eb2 re PR tree-optimization/82381 (internal compiler error: qsort checking failed)
PR tree-optimization/82381
	* tree-ssa-reassoc.c (sort_by_operand_rank): Check for different
	oeN->rank first.  Return 1 or -1 if one op is SSA_NAME and the other
	is not.

From-SVN: r253396
2017-10-04 09:52:26 +02:00
Jakub Jelinek
5c38262d95 re PR tree-optimization/82374 (#pragma GCC optimize is not applied to openmp-generated functions)
PR tree-optimization/82374
	* omp-low.c (create_omp_child_function): Copy DECL_ATTRIBUTES,
	DECL_FUNCTION_SPECIFIC_OPTIMIZATION,
	DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_VERSIONED from
	current_function_decl to the new decl.

	* gcc.dg/gomp/pr82374.c: New test.

From-SVN: r253395
2017-10-04 09:50:38 +02:00
Richard Biener
21375f0ded id-17.f: For ilp32 allow graphite codegen errors and scan for one.
2017-10-04  Richard Biener  <rguenther@suse.de>

	* gfortran.dg/graphite/id-17.f: For ilp32 allow graphite codegen
	errors and scan for one.
	* gfortran.dg/graphite/id-19.f: Likewise.
	* gfortran.dg/graphite/pr29832.f90: Likewise.
	* gfortran.dg/graphite/pr42326-1.f90: Likewise.
	* gfortran.dg/graphite/pr42326.f90: Likewise.
	* gfortran.dg/graphite/pr68550-2.f90: Likewise.
	* gfortran.dg/graphite/run-id-2.f90: Likewise.
	* gfortran.dg/graphite/run-id-3.f90: Likewise.
	* gfortran.dg/graphite/pr42393-1.f90: Dump graphite.

From-SVN: r253394
2017-10-04 07:43:54 +00:00
GCC Administrator
86a865a0a1 Daily bump.
From-SVN: r253393
2017-10-04 00:16:21 +00:00
Michael Meissner
944e08418b rs6000-builtin.def (BU_FLOAT128_2_HW): Define new helper macro for IEEE float128 hardware built-in functions.
[gcc]
2017-10-03  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/rs6000-builtin.def (BU_FLOAT128_2_HW): Define new
	helper macro for IEEE float128 hardware built-in functions.
	(SQRTF128_ODD): Add built-in functions with the round-to-odd
	semantics.
	(TRUNCF128_ODD): Likewise.
	(ADDF128_ODD): Likewise.
	(SUBF128_ODD): Likewise.
	(MULF128_ODD): Likewise.
	(DIVF128_ODD): Likewise.
	(FMAF128_ODD): Likewise.
	* config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): Rename to
	UNSPEC_TRUNC_ROUND_TO_ODD.
	(UNSPEC_TRUNC_ROUND_TO_ODD): Likewise.
	(UNSPEC_ADD_ROUND_TO_ODD): New unspec codes for the IEEE 128-bit
	floating point round to odd instructions.
	(UNSPEC_SUB_ROUND_TO_ODD): Likewise.
	(UNSPEC_MUL_ROUND_TO_ODD): Likewise.
	(UNSPEC_DIV_ROUND_TO_ODD): Likewise.
	(UNSPEC_FMA_ROUND_TO_ODD): Likewise.
	(UNSPEC_SQRT_ROUND_TO_ODD): Likewise.
	(trunc<mode>sf2_hw): Change the truncate with round to odd
	expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.
	(add<mode>3_odd): Add insns for IEEE 128-bit floating point round
	to odd hardware instructions.
	(sub<mode>3_odd): Likewise.
	(mul<mode>3_odd): Likewise.
	(div<mode>3_odd): Likewise.
	(sqrt<mode>2_odd): Likewise.
	(fma<mode>4_odd): Likewise.
	(fms<mode>4_odd): Likewise.
	(nfma<mode>4_odd): Likewise.
	(nfms<mode>4_odd): Likewise.
	(trunc<mode>df2_odd): Change the truncate with round to odd
	expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.  Add a generator
	function.
	* doc/extend.texi (PowerPC built-in functions): Update documentation
	for existing IEEE float128-bit built-in functions.  Add built-in
	functions that generate the IEEE 128-bit floating point round to
	odd instructions.

[gcc/testsuite]
2017-10-03  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* gcc.target/powerpc/float128-odd.c: New test.

From-SVN: r253389
2017-10-03 23:08:16 +00:00
Paolo Carlini
5bd8ff41eb re PR c++/70343 (internal compiler error: in tsubst_copy, wrong code with lambda in template fn)
2017-10-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/70343
	* g++.dg/cpp0x/lambda/lambda-70343.C: New.

From-SVN: r253388
2017-10-03 21:15:56 +00:00
Tony Reix
fbdc37805a Import from libffi master repository.
2017-08-31  Tony Reix  <tony.reix@atos.net>

        * src/powerpc/aix.S (ffi_call_AIX): Add debugging pseudo-op and
        labels for EH.
        (ffi_call_go_AIX): New function.
        (_GLOBAL__F_libffi_src_powerpc_aix): New EH frame.
        * src/powerpc/aix_closure.S (ffi_closure_ASM): Add debugging
        pseudo-op and labels for EH.
        (ffi_go_closure_ASM): New function.
        (_GLOBAL__F_libffi_src_powerpc_aix_closure): New EH frame.
        * src/powrpc/ffi_darwin.c (ffi_call_go): New function.
        (ffi_prep_go_closure): New function.
        (ffi_closure_helper_common): Rename from ffi_closure_helper_DARWIN.
        (ffi_closure_helper_DARWIN): Call ffi_closure_helper_common.
        (ffi_go_closure_helper_DARWIN): Call ffi_closure_helper_common.
        * src/powerpc/ffitarget.h (FFI_GO_CLOSURES): Define.

From-SVN: r253386
2017-10-03 14:26:31 -04:00
Jeff Law
11e3d45c7e re PR target/82358 (i386/stack-check-11.c fail)
PR target/82358
	* gcc.target/i386/stack-check-11.c: Use -mtune=generic.

From-SVN: r253385
2017-10-03 11:09:54 -06:00