Commit Graph

167160 Commits

Author SHA1 Message Date
Martin Sebor
837865bdc2 gimple-ssa-sprintf.c (target_strtol): Rename...
gcc/ChangeLog:
	* gimple-ssa-sprintf.c (target_strtol): Rename...
	(target_strtohwi): ...to this.  Handle values up to HOST_WIDE_INT_MAX.
	(parse_directive): Adjust to name change.  Use HOST_WIDE_INT_MAX to
	check for range error.

From-SVN: r269166
2019-02-23 13:25:57 -07:00
H.J. Lu
34ab23c9ac Include "../../../libgfortran/ISO_Fortran_binding.h"
PR testsuite/89476
	* gfortran.dg/ISO_Fortran_binding_5.c: Include
	"../../../libgfortran/ISO_Fortran_binding.h".
	* gfortran.dg/ISO_Fortran_binding_6.c: Likewise.

From-SVN: r269165
2019-02-23 11:58:52 -08:00
H.J. Lu
aebe10d48c driver: Also prune joined switches with negation
When -march=native is passed to host_detect_local_cpu to the backend,
it overrides all command lines after it.  That means

$ gcc -march=native -march=skylake-avx512

is the treated as

$ gcc -march=skylake-avx512 -march=native

Prune joined switches with Negative and RejectNegative to allow
-march=skylake-avx512 to override previous -march=native on command-line.

gcc/

	PR driver/69471
	* opts-common.c (prune_options): Also prune joined switches
	with Negative and RejectNegative.
	* config/i386/i386.opt (march=): Add Negative(march=).
	(mtune=): Add Negative(mtune=).
	* doc/options.texi: Document Negative used together with Joined
	and RejectNegative.

gcc/testsuite/

	PR driver/69471
	* gcc.dg/pr69471-1.c: New test.
	* gcc.dg/pr69471-2.c: Likewise.
	* gcc.target/i386/pr69471-3.c: Likewise.

From-SVN: r269164
2019-02-23 11:39:35 -08:00
Jerry DeLisle
85627e2a9e re PR fortran/84387 (Defined output does not work for a derived type that has no components)
2019-02-23  Jerry DeLisle <jvdelisle@gcc.gnu.org>

	PR fortran/84387
	* trans-io.c (transfer_expr): Do not return if there are no
	components to the derived type or class.

	* gfortran.dg/dtio_34.f90: New test.

From-SVN: r269161
2019-02-23 18:07:10 +00:00
Marek Polacek
3aab3d374a re PR c++/89419 (ICE in is_normal_capture_proxy starting with r253601)
PR c++/89419
	* g++.dg/cpp1y/lambda-generic-89419.C: New test.

From-SVN: r269159
2019-02-23 14:54:23 +00:00
Marek Polacek
28a19c5be3 PR c++/88294 - ICE with non-constant noexcept-specifier.
* pt.c (maybe_instantiate_noexcept): Set up the list of local
	specializations.  Set current_class_{ptr,ref}.

	* g++.dg/cpp0x/noexcept34.C: New test.
	* g++.dg/cpp0x/noexcept35.C: New test.

From-SVN: r269158
2019-02-23 14:05:31 +00:00
Paul Thomas
524cee402e re PR fortran/88117 (ICE in gimplify_var_or_parm_decl, at gimplify.c:2697)
2019-02-23  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/88117
	* resolve.c (deferred_op_assign): Return if the lhs expression
	has the pointer attribute.
	* trans-expr.c (gfc_trans_assignment_1): Do not fix the string
	length if the lhs expression has the pointer attribute.

2019-02-23  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/88117
	* gfortran.dg/deferred_character_32.f90 : New test

From-SVN: r269157
2019-02-23 13:18:47 +00:00
Paul Thomas
c280838969 re PR fortran/89385 (Incorrect members of C descriptor for an allocatable object)
2019-02-23  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/89385
	PR fortran/89366
	* decl.c (gfc_verify_c_interop_param): Restriction on string
	length being one is lifted for F2018.
	* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): For scalar
	characters with intent in, make a temporary and copy the result
	of the expression evaluation into it.
	(gfc_conv_procedure_call): Set a flag for character formal args
	having a character length that is not unity. If the procedure
	is bind C, call gfc_conv_gfc_desc_to_cfi_desc in this case.
	Also, extend bind C calls to unconditionally convert both
	pointers and allocatable expressions.

2019-02-23  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/89385
	* gfortran.dg/ISO_Fortran_binding_1.f90 : Correct test for
	previously incorrect lbound for allocatable expressions. Also
	correct stop values to avoid repetition.
	* gfortran.dg/ISO_Fortran_binding_5.f90 : New test
	* gfortran.dg/ISO_Fortran_binding_5.c : Support previous test.

	PR fortran/89366
	* gfortran.dg/ISO_Fortran_binding_6.f90 : New test
	* gfortran.dg/ISO_Fortran_binding_6.c : Support previous test.
	* gfortran.dg/pr32599.f03 : Set standard to F2008.

2019-02-23  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/89385
	PR fortran/89366
	* runtime/ISO_Fortran_binding.c (cfi_desc_to_gfc_desc) : In the
	interchange between character and derived, the character type
	was being set incorrectly.
	(gfc_desc_to_cfi_desc) : Eliminate the interchange of types in
	this function. Do not add the kind and length information to
	the type field of structures. Lbounds were incorrectly being
	set to zero for allocatable and pointer descriptors. Should
	have been non-pointer, non-allocatables that received this
	treatment.

From-SVN: r269156
2019-02-23 12:18:44 +00:00
Jonathan Wakely
ace857f95d PR libstdc++/89446 fix null pointer dereference in char_traits
PR libstdc++/89446
	* include/bits/char_traits.h (__constant_char_array): Check index is
	in range before dereferencing.
	(char_traits<char>::compare, char_traits<char>::find)
	(char_traits<char8_t>::compare, char_traits<char8_t>::find): Return
	immediately if n is zero.
	(char_traits<wchar_t>::compare, char_traits<wchar_t>::find): Likewise.
	Remove workarounds for PR 67026.
	* testsuite/21_strings/basic_string_view/operators/char/89446.cc:
	New test.
	* testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc:
	New test.

From-SVN: r269148
2019-02-23 03:01:59 +00:00
David Malcolm
c175330208 Capture source location of dtors (PR c++/89390)
gcc/cp/ChangeLog:
	PR c++/89390
	* parser.c (cp_parser_unqualified_id): Capture and use locations
	for destructors.

gcc/testsuite/ChangeLog:
	PR c++/89390
	* g++.dg/diagnostic/pr89390.C: Update expected location of error,
	renaming to a multicharacter name, so that start != finish.  Add
	tests for dtor locations.

From-SVN: r269145
2019-02-23 01:19:38 +00:00
GCC Administrator
986e0e33f6 Daily bump.
From-SVN: r269142
2019-02-23 00:16:28 +00:00
David Malcolm
0d527f0d31 re PR tree-optimization/88074 (g++ hangs on math expression)
PR middle-end/88074
	* simplify.c (norm2_do_sqrt, gfc_simplify_norm2): Use
	mpfr_number_p && !mpfr_zero_p instead of mpfr_regular_p.
	(norm2_add_squared): Likewise.  Use mp_exp_t rather than mpfr_exp_t.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r269139
2019-02-23 01:14:52 +01:00
Paolo Carlini
01d3d58151 re PR c++/84676 (internal compiler error: Segmentation fault (build_new_op_1))
2019-02-22  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84676
	* g++.dg/cpp0x/pr84676.C: New.

From-SVN: r269138
2019-02-22 23:16:14 +00:00
Martin Sebor
0a7fe8bcd9 builtin-sprintf-10.c: Cast wchar_t to wint_t to avoid a bogus -Wformat warning in ILP32 (bug 77970).
gcc/testsuite/ChangeLog:

	* gcc.dg/tree-ssa/builtin-sprintf-10.c: Cast wchar_t to wint_t
	to avoid a bogus -Wformat warning in ILP32 (bug 77970).

From-SVN: r269137
2019-02-22 16:08:23 -07:00
Eric Botcazou
047b3e3408 baseline_symbols.txt: Adjust.
* config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: Adjust.
	* config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: Likewise.

From-SVN: r269136
2019-02-22 21:25:59 +00:00
Harald Anlauf
56bf85c1a7 re PR fortran/83057 (OPEN without a filename and without STATUS='SCRATCH' could produce a warning)
2019-02-22  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/83057
	* io.c (gfc_match_open): Fix logic in checks of OPEN statement
	when NEWUNIT= is specified.

	PR fortran/83057
	* gfortran.dg/newunit_6.f90: New test.

From-SVN: r269134
2019-02-22 20:35:38 +00:00
Steven G. Kargl
f3e1797acf re PR fortran/89431 (CPP integer macros not defined)
2019-02-22  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/89431
	* gfortran.texi: Fix documentation to match the implementation.

From-SVN: r269132
2019-02-22 20:27:57 +00:00
Marek Polacek
4770beb36c PR c++/89420 - ICE with CAST_EXPR in explicit-specifier.
* decl.c (build_explicit_specifier): Don't check
	processing_template_decl.  Call instantiation_dependent_expression_p
	instead of value_dependent_expression_p.  Call
	instantiate_non_dependent_expr_sfinae before
	build_converted_constant_expr instead of calling
	instantiate_non_dependent_expr after it.  Add
	processing_template_decl_sentinel.

	* g++.dg/cpp2a/explicit14.C: New test.

From-SVN: r269131
2019-02-22 19:24:37 +00:00
Jakub Jelinek
fcb141ac22 re PR libstdc++/89402 (warning: ‘void _ZNKSt4hashIeEclEe()’ specifies less restrictive attribute than its target)
PR libstdc++/89402
	* src/c++98/compatibility-ldbl.cc (_ZNKSt4hashIeEclEe): Change return
	type to std::size_t and argument to type to long double.

From-SVN: r269130
2019-02-22 20:10:47 +01:00
Martin Sebor
16a919a716 extend.texi (Other Builtins): Add __builtin_is_constant_evaluated.
gcc/ChangeLog:

	* doc/extend.texi (Other Builtins): Add
	__builtin_is_constant_evaluated.

From-SVN: r269129
2019-02-22 11:38:36 -07:00
Richard Biener
c87cc0c01e re PR tree-optimization/87609 (miscompilation with restrict and loop)
2019-02-22  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87609
	* tree-cfg.c (gimple_duplicate_bb): Only remap inlined cliques.

From-SVN: r269127
2019-02-22 17:56:59 +00:00
Martin Sebor
eb319c505d PR tree-optimization/88993 - GCC 9 -Wformat-overflow=2 should reflect real libc limits
PR tree-optimization/88993 - GCC 9 -Wformat-overflow=2 should reflect real libc limits
PR tree-optimization/88835 - overly aggressive -Werror=format-overflow for printf

gcc/ChangeLog:

	PR tree-optimization/88993
	PR tree-optimization/88853
	* gimple-ssa-sprintf.c (sprintf_dom_walker::call_info::is_file_func):
	New helper.
	(sprintf_dom_walker::call_info::is_string_func): New helper.
	(format_directive): Only issue "may exceed" 4095/INT_MAX warnings
	for formatted string functions.
	(sprintf_dom_walker::handle_gimple_call): Fix a typo in a comment.

gcc/testsuite/ChangeLog:

	PR tree-optimization/88993
	PR tree-optimization/88853
	* gcc.dg/tree-ssa/builtin-fprintf-warn-2.c: New test.
	* gcc.dg/tree-ssa/builtin-printf-warn-2.c: New test.
	* gcc.dg/tree-ssa/builtin-snprintf-warn-3.c: Adjust.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-18.c: Same.

From-SVN: r269125
2019-02-22 10:38:11 -07:00
Jeff Law
cfed471a56 re PR rtl-optimization/87761 ([MIPS] New FAIL: gcc.target/mips/fix-r4000-10.c -O1 start with r265398)
PR rtl-optimization/87761
	* config/mips/mips.md: Add new combiner pattern to recognize
	a bitfield extraction using (ashiftrt (truncate (ashift (...)))).

From-SVN: r269123
2019-02-22 09:38:43 -07:00
Matthew Malcomson
341fca1b49 Handle stack pointer with SUBS/ADDS instructions.
In general the stack pointer was not handled for many SUBS/ADDS patterns in
aarch64.md.
Both the "extended register" and "immediate" forms allow the stack pointer to be
used as the source register, while no form allows the stack pointer for the
destination register.

The define_insn patterns generating ADDS/SUBS did not allow the stack pointer
for any operand, while the define_peephole2 patterns that generated RTX to be
matched by these patterns allowed the stack pointer for any operand.

The patterns are fixed by adding the 'k' constraint for the first source operand
to all define_insns that generate the ADDS/SUBS "extended register" and
"immediate" forms (but not the "shifted register" form).

In peephole optimizations, constraint strings are ignored (see "(gccint) C
Constraint Interface" info node in the documentation), so the decision to act or
not is based solely on the predicate and condition.
This patch introduces a new predicate "aarch64_general_reg" to be used in
define_peephole2 patterns where only GENERAL_REGS registers are acceptable and
uses that predicate in the peepholes that generate patterns for ADDS/SUBS.

Full bootstrap and regtest done on aarch64-none-linux-gnu.
Regression tests done on aarch64-none-linux-gnu and aarch64-none-elf cross
compiler.

OK for trunk?


gcc/ChangeLog:

2019-02-22  Matthew Malcomson  <matthew.malcomson@arm.com>

	PR target/89324
	* config/aarch64/aarch64.md: Use aarch64_general_reg predicate on
	destination register in peepholes generating patterns for ADDS/SUBS.
	(add<mode>3_compare0,
	*addsi3_compare0_uxtw, add<mode>3_compareC,
	add<mode>3_compareV_imm, add<mode>3_compareV,
	*adds_<optab><ALLX:mode>_<GPI:mode>,
	*subs_<optab><ALLX:mode>_<GPI:mode>,
	*adds_<optab><ALLX:mode>_shift_<GPI:mode>,
	*subs_<optab><ALLX:mode>_shift_<GPI:mode>,
	*adds_<optab><mode>_multp2, *subs_<optab><mode>_multp2,
	*sub<mode>3_compare0, *subsi3_compare0_uxtw,
	sub<mode>3_compare1): Allow stack pointer for source register.
	* config/aarch64/predicates.md (aarch64_general_reg): New predicate.


gcc/testsuite/ChangeLog:

2019-02-22  Matthew Malcomson  <matthew.malcomson@arm.com>

	PR target/89324
	* gcc.dg/rtl/aarch64/subs_adds_sp.c: New test.
	* gfortran.fortran-torture/compile/pr89324.f90: New test.

From-SVN: r269122
2019-02-22 16:35:22 +00:00
Martin Sebor
3c2a70cb14 PR c/89425 - -Wabsolute-value warns in dead subexpressions
gcc/c/ChangeLog:

	PR c/89425
	* c-parser.c (sizeof_ptr_memacc_comptypes): Avoid warning in
	unreachable subexpressions.

gcc/testsuite/ChangeLog:

	PR c/89425
	* gcc.dg/Wabsolute-value.c: New test.

From-SVN: r269121
2019-02-22 09:24:36 -07:00
Martin Sebor
d228ac9ae5 Wbuiltin-declaration-mismatch-12.c: New test.
gcc/testsuite/ChangeLog:
	* gcc.dg/Wbuiltin-declaration-mismatch-12.c: New test.

From-SVN: r269120
2019-02-22 09:21:07 -07:00
H.J. Lu
f143228062 i386: Add pass_remove_partial_avx_dependency
With -mavx, for

$ cat foo.i
extern float f;
extern double d;
extern int i;

void
foo (void)
{
  d = f;
  f = i;
}

we need to generate

	vxorp[ds]	%xmmN, %xmmN, %xmmN
	...
	vcvtss2sd	f(%rip), %xmmN, %xmmX
	...
	vcvtsi2ss	i(%rip), %xmmN, %xmmY

to avoid partial XMM register stall.  This patch adds a pass to generate
a single

	vxorps		%xmmN, %xmmN, %xmmN

at entry of the nearest dominator for basic blocks with SF/DF conversions,
which is in the fake loop that contains the whole function, instead of
generating one

	vxorp[ds]	%xmmN, %xmmN, %xmmN

for each SF/DF conversion.

NB: The LCM algorithm isn't appropriate here since it may place a vxorps
inside the loop.  Simple testcase show this:

$ cat badcase.c

extern float f;
extern double d;

void
foo (int n, int k)
{
  for (int j = 0; j != n; j++)
    if (j < k)
      d = f;
}

It generates

    ...
    loop:
      if(j < k)
        vxorps    %xmm0, %xmm0, %xmm0
        vcvtss2sd f(%rip), %xmm0, %xmm0
      ...
    loopend
    ...

This is because LCM only works when there is a certain benifit.  But for
conditional branch, LCM wouldn't move

   vxorps  %xmm0, %xmm0, %xmm0

out of loop.  SPEC CPU 2017 on Intel Xeon with AVX512 shows:

1. The nearest dominator

|RATE			|Improvement|
|500.perlbench_r	| 0.55%	|
|538.imagick_r		| 8.43%	|
|544.nab_r		| 0.71%	|

2. LCM

|RATE			|Improvement|
|500.perlbench_r	| -0.76% |
|538.imagick_r		| 7.96%  |
|544.nab_r		| -0.13% |

Performance impacts of SPEC CPU 2017 rate on Intel Xeon with AVX512
using

-Ofast -flto -march=skylake-avx512 -funroll-loops

before

commit e739972ad6ad05e32a1dd5c29c0b950a4c4bd576
Author: uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Thu Jan 31 20:06:42 2019 +0000

            PR target/89071
            * config/i386/i386.md (*extendsfdf2): Split out reg->reg
            alternative to avoid partial SSE register stall for TARGET_AVX.
            (truncdfsf2): Ditto.
            (sse4_1_round<mode>2): Ditto.

    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@268427 138bc75d-0d04-0410-961f-82ee72b054a4

are:

|INT RATE		|Improvement|
|500.perlbench_r	| 0.55%	|
|502.gcc_r		| 0.14%	|
|505.mcf_r		| 0.08%	|
|523.xalancbmk_r	| 0.18%	|
|525.x264_r		|-0.49%	|
|531.deepsjeng_r	|-0.04%	|
|541.leela_r		|-0.26%	|
|548.exchange2_r	|-0.3%	|
|557.xz_r		|BuildSame|

|FP RATE		|Improvement|
|503.bwaves_r	        |-0.29% |
|507.cactuBSSN_r	| 0.04%	|
|508.namd_r		|-0.74%	|
|510.parest_r		|-0.01%	|
|511.povray_r		| 2.23%	|
|519.lbm_r		| 0.1%	|
|521.wrf_r		| 0.49%	|
|526.blender_r		| 0.13%	|
|527.cam4_r		| 0.65%	|
|538.imagick_r		| 8.43%	|
|544.nab_r		| 0.71%	|
|549.fotonik3d_r	| 0.15%	|
|554.roms_r		| 0.08%	|

After commit e739972ad6ad05e32a1dd5c29c0b950a4c4bd576, on Skylake client,
impacts on 538.imagick_r with

-fno-unsafe-math-optimizations -march=native -Ofast -funroll-loops -flto

1. Size comparision:

before:

   text	   data	    bss	    dec	    hex	filename
2436377	   8352	   4528	2449257	 255f69 imagick_r

after:

   text	   data	    bss	    dec	    hex	filename
2425249	   8352	   4528	2438129	 2533f1 imagick_r

2. Number of vxorps:

before		after		difference
4948            4135            -19.66%

3. Performance improvement:

|RATE			|Improvement|
|538.imagick_r		| 5.5%  |

gcc/

2019-02-22  H.J. Lu  <hongjiu.lu@intel.com>
	    Hongtao Liu  <hongtao.liu@intel.com>
	    Sunil K Pandey  <sunil.k.pandey@intel.com>

	PR target/87007
	* config/i386/i386-passes.def: Add
	pass_remove_partial_avx_dependency.
	* config/i386/i386-protos.h
	(make_pass_remove_partial_avx_dependency): New.
	* config/i386/i386.c (make_pass_remove_partial_avx_dependency):
	New function.
	(pass_data_remove_partial_avx_dependency): New.
	(pass_remove_partial_avx_dependency): Likewise.
	(make_pass_remove_partial_avx_dependency): Likewise.
	* config/i386/i386.md (avx_partial_xmm_update): New attribute.
	(*extendsfdf2): Add avx_partial_xmm_update.
	(truncdfsf2): Likewise.
	(*float<SWI48:mode><MODEF:mode>2): Likewise.
	(SF/DF conversion splitters): Disabled for TARGET_AVX.

gcc/testsuite/

2019-02-22  H.J. Lu  <hongjiu.lu@intel.com>
	    Hongtao Liu  <hongtao.liu@intel.com>
	    Sunil K Pandey  <sunil.k.pandey@intel.com>

	PR target/87007
	* gcc.target/i386/pr87007-1.c: New test.
	* gcc.target/i386/pr87007-2.c: Likewise.

Co-Authored-By: Hongtao Liu <hongtao.liu@intel.com>
Co-Authored-By: Sunil K Pandey <sunil.k.pandey@intel.com>

From-SVN: r269119
2019-02-22 07:54:08 -08:00
Aldy Hernandez
965779b4ad re PR middle-end/85598 (Incorrect -Wformat-truncation in a loop only at -O2 and -O3)
PR middle-end/85598
	* gimple-ssa-sprintf.c (pass_sprintf_length::execute): Enable loop
	analysis for pass.

From-SVN: r269115
2019-02-22 13:46:01 +00:00
Thiago Macieira
c945003352 x86: (Reapply) Move AESNI generation to Skylake and Goldmont
This is a repeat of commit r263989, which commit r264052 accidentally
reverted.

2019-02-22  Thiago Macieira  <thiago.macieira@intel.com>

	PR target/89444
	* config/i386/i386.h (PTA_WESTMERE): Remove PTA_AES.
	(PTA_SKYLAKE): Add PTA_AES.
	(PTA_GOLDMONT): Likewise.

From-SVN: r269114
2019-02-22 04:49:21 -08:00
Richard Biener
921bb9d1a3 c-pch.c (no_checksum): Remove.
2019-02-22  Richard Biener  <rguenther@suse.de>

	c-family/
	* c-pch.c (no_checksum): Remove.
	(pch_init): Remove assertion that executable_checksum is not
	all zero.
	(c_common_valid_pch): Likewise.

From-SVN: r269113
2019-02-22 10:59:33 +00:00
Sudakshina Das
c904388dc1 [GCC, AArch64] Fix a couple of bugs in BTI
While doing more testing I found a couple of issues with my BTI patches.
This patch fixes them:
1) Remove a reference to return address key. The original patch was written
based on a different not yet committed patch ([PATCH 3/3][GCC][AARCH64] Add
support for pointer authentication B key) and I missed out on cleaning this
up. This is hidden behind the configuration option and thus went unnoticed.
2) Add a missed case for adding the BTI instruction in thunk functions.

*** gcc/ChangeLog ***

2019-02-22  Sudakshina Das  <sudi.das@arm.com>

	* config/aarch64/aarch64.c (aarch64_output_mi_thunk): Add bti
	instruction if enabled.
	(aarch64_override_options): Remove reference to return address key.

From-SVN: r269112
2019-02-22 10:55:22 +00:00
Richard Biener
9f0ffb2bdf re PR tree-optimization/89440 (ICE in vect_create_epilog_for_reduction, at tree-vect-loop.c:5502)
2019-02-22  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/89440
	* tree-vect-loop.c (vect_create_epilog_for_reduction): Remove
	not necessary assert.

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

From-SVN: r269111
2019-02-22 10:52:49 +00:00
Thomas Schwinge
aceb106743 Remove unused check_effective_target_offload_nvptx
gcc/testsuite/
	* lib/target-supports.exp (check_effective_target_offload_nvptx):
	Remove.

From-SVN: r269110
2019-02-22 11:51:52 +01:00
Thomas Schwinge
b03d721a62 [libgomp] In OpenACC testing, by default only build for the offload target that we're actually going to test
... to avoid compilation overhead, and to keep simple '-foffload=[...]'
handling in test cases.

	libgomp/
	* testsuite/libgomp.oacc-c++/c++.exp: Specify
	"-foffload=$offload_target".
	* testsuite/libgomp.oacc-c/c.exp: Likewise.
	* testsuite/libgomp.oacc-fortran/fortran.exp: Likewise.
	* testsuite/lib/libgomp.exp
	(check_effective_target_openacc_nvidia_accel_configured): Remove,
	as (conceptually) merged into
	check_effective_target_openacc_nvidia_accel_selected.  Adjust all
	users.

From-SVN: r269109
2019-02-22 11:51:35 +01:00
Thomas Schwinge
0a0384b43a [libgomp] In OpenACC testing, cycle though all offload targets
... instead of through offload plugins.

	libgomp/
	* plugin/configfrag.ac: Populate and AC_SUBST offload_targets.
	* testsuite/libgomp-test-support.exp.in: Adjust.
	* testsuite/lib/libgomp.exp: Likewise.  Don't populate
	openacc_device_types_s.
	(offload_target_to_openacc_device_type): New proc.
	* testsuite/libgomp.oacc-c++/c++.exp: Adjust.
	* testsuite/libgomp.oacc-c/c.exp: Likewise.
	* testsuite/libgomp.oacc-fortran/fortran.exp: Likewise.
	* Makefile.in: Regenerate.
	* configure: Likewise.
	* testsuite/Makefile.in: Likewise.

From-SVN: r269108
2019-02-22 11:51:20 +01:00
Thomas Schwinge
ee332b4a9a [libgomp] Clarify difference between offload target, offload plugin, and OpenACC device type
libgomp/
	* plugin/configfrag.ac: Populate and AC_SUBST offload_plugins
	instead of offload_targets, and AC_DEFINE_UNQUOTED OFFLOAD_PLUGINS
	instead of OFFLOAD_TARGETS.
	* target.c (gomp_target_init): Adjust.
	* testsuite/libgomp-test-support.exp.in: Likewise.
	* testsuite/lib/libgomp.exp: Likewise.  Populate
	openacc_device_types_s instead of offload_targets_s_openacc.
	(check_effective_target_openacc_nvidia_accel_selected)
	(check_effective_target_openacc_host_selected): Adjust.
	* testsuite/libgomp.oacc-c++/c++.exp: Likewise.
	* testsuite/libgomp.oacc-c/c.exp: Likewise.
	* testsuite/libgomp.oacc-fortran/fortran.exp: Likewise.
	* Makefile.in: Regenerate.
	* config.h.in: Likewise.
	* configure: Likewise.
	* testsuite/Makefile.in: Likewise.

From-SVN: r269107
2019-02-22 11:51:05 +01:00
Thomas Schwinge
1241136c71 [libgomp] In OpenACC offloading testing, be more explicit in what is supported, and what is not, or why not
libgomp/
	* testsuite/lib/libgomp.exp: Error out for unknown offload target.
	* testsuite/libgomp.oacc-c++/c++.exp: Likewise.  Report if
	"offloading: supported, but hardware not accessible".
	* testsuite/libgomp.oacc-c/c.exp: Likewise.
	* testsuite/libgomp.oacc-fortran/fortran.exp: Likewise.

From-SVN: r269106
2019-02-22 11:50:49 +01:00
Thomas Schwinge
68034b1bc2 [PR72741] Use 'oacc_build_routine_dims' for Fortran OpenACC 'routine' directives, too
... instead of having an incomplete local implementation.

With these changes in place, we can then also revert the work-around r267213
"[nvptx] Unify C/Fortran routine handling in nvptx_goacc_validate_dims".

	gcc/fortran/
	PR fortran/72741
	* gfortran.h (oacc_routine_lop): New enum.
	(symbol_attribute): Use it.
	* openmp.c (gfc_oacc_routine_dims): Replace with...
	(gfc_oacc_routine_lop): ... this new function.
	(gfc_match_oacc_routine): Adjust.
	* trans-decl.c (add_attributes_to_decl): Likewise.
	gcc/
	PR fortran/72741
	* omp-general.c (oacc_replace_fn_attrib): Mostly split out into...
	(oacc_replace_fn_attrib_attr): ... this new function.
	* omp-general.h (oacc_replace_fn_attrib_attr): New prototype.
	* config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Revert workaround.
	gcc/testsuite/
	PR fortran/72741
	* gfortran.dg/goacc/classify-routine.f95: Adjust.

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

From-SVN: r269105
2019-02-22 11:50:35 +01:00
Thomas Schwinge
c319667adf Revert earlier OpenACC 'routine' changes
..., which were committed as part of, but logically don't belong into r261813
"Update OpenACC data clause semantics to the 2.5 behavior", and which confuse
later changes.

	gcc/fortran/
	* openmp.c (gfc_match_oacc_declare): Revert earlier changes.
	gcc/testsuite/
	* c-c++-common/goacc/routine-5.c: Revert earlier changes.
	* g++.dg/goacc/template.C: Likewise.

From-SVN: r269104
2019-02-22 11:50:18 +01:00
Thomas Schwinge
568de94944 Silence '-Whsa' diagnostic in 'gfortran.dg/goacc/pr78027.f90'
... which has been present (with HSA offloading configured) ever since this
test case got added.

	gcc/testsuite/
	PR fortran/78027
	* gfortran.dg/goacc/pr78027.f90: Add 'dg-additional-options "-Wno-hsa"'.

From-SVN: r269103
2019-02-22 11:50:02 +01:00
Thomas Schwinge
2263c9f24f [C, C++] Use correct location information for OpenACC shape and simple clauses
gcc/c/
	* c-parser.c (c_parser_oacc_shape_clause): Add loc formal
	parameter.  Adjust all users.
	(c_parser_oacc_simple_clause): Replace parser with loc formal
	parameter.  Adjust all users.
	gcc/cp/
	* parser.c (cp_parser_oacc_simple_clause): Remove parser formal
	parameter, move loc formal parameter to the front.  Adjust all
	users.
	(cp_parser_oacc_shape_clause): Add loc formal parameter.  Adjust
	all users.

From-SVN: r269102
2019-02-22 11:49:43 +01:00
Kyrylo Tkachov
81a5f36d66 [arm] Add support for Neoverse N1
This patch adds support for the Neoverse N1 [1]. This CPU was previously supported through the Ares codename.
-mcpu=ares is retained as an alias of the new -mcpu=neoverse-n1.

Bootstrapped and tested on arm-none-linux-gnueabihf. 

	* config/arm/arm-cpus.in (ares): Rename to...
	(neoverse-n1): ... This.  Add ares as alias.
	* config/arm/arm-tables.opt: Regenerate.
	* config/arm/arm-tune.md: Likewise.
	* doc/invoke.txt (ARM Options): Document neoverse-n1.

From-SVN: r269101
2019-02-22 08:59:20 +00:00
Kyrylo Tkachov
3f23539cff [AArch64] Add support for Neoverse E1
This patch adds -mcpu and -mtune support for the Neoverse E1 CPU [1].
The new option is -mcpu=neoverse-e1.
Bootstrapped and tested on aarch64-none-linux-gnu. 

	* config/aarch64/aarch64-cores.def (neoverse-e1): Define.
	* config/aarch64/aarch64-tune.md: Regenerate.
	* doc/invoke.texi (AArch64 Options): Document neoverse-e1 -mcpu option.

From-SVN: r269100
2019-02-22 08:58:04 +00:00
Kyrylo Tkachov
9ed6834dea [AArch64] Add support for Neoverse N1
This patch adds support for the Neoverse N1 CPU [1]. This was supported in GCC earlier through the codename Ares,
which it now replaces. -mcpu=ares is still accepted as there's been a binutils release supporting it,
but the internal structures are renamed to use Neoverse N1-related identifiers.

Bootstrapped and tested on aarch64-none-linux-gnu.


	* config/aarch64/aarch64.c (ares_tunings): Rename to...
	(neoversen1_tunings): ... This.
	* config/aarch64/aarch64-cores.def (ares): Change tuning to the above.
	(neoverse-n1): New CPU.
	* config/aarch64/aarch64-tune.md: Regenerate.
	* doc/invoke.txt (AArch64 Options): Document neoverse-n1.

From-SVN: r269099
2019-02-22 08:56:50 +00:00
Richard Biener
229d576cde re PR tree-optimization/87609 (miscompilation with restrict and loop)
2019-02-22  Richard Biener  <rguenther@suse.de>

	PR middle-end/87609
	* cfghooks.h (dependence_hash): New typedef.
	(struct copy_bb_data): New type.
	(cfg_hooks::duplicate_block): Adjust to take a copy_bb_data argument.
	(duplicate_block): Likewise.
	* cfghooks.c (duplicate_block): Pass down copy_bb_data.
	(copy_bbs): Create and pass down copy_bb_data.
	* cfgrtl.c (cfg_layout_duplicate_bb): Adjust.
	(rtl_duplicate_bb): Likewise.
	* tree-cfg.c (gimple_duplicate_bb): If the copy_bb_data arg is not NULL
	remap dependence info.

	* gcc.dg/torture/restrict-7.c: New testcase.

From-SVN: r269098
2019-02-22 08:38:14 +00:00
Richard Biener
3c8b06dcc6 re PR tree-optimization/87609 (miscompilation with restrict and loop)
2019-02-22  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87609
	* tree-core.h (tree_base): Document special clique values.
	* tree-inline.c (remap_dependence_clique): Do not use the
	special clique value of one.
	(maybe_set_dependence_info): Use clique one.
	(clear_dependence_clique): New callback.
	(compute_dependence_clique): Clear clique one from all refs
	before assigning it (again).

From-SVN: r269097
2019-02-22 08:36:30 +00:00
Eric Botcazou
406e490892 configure.host (abi_baseline_pair): Adjust for SPARC64/Linux.
* configure.host (abi_baseline_pair): Adjust for SPARC64/Linux.
	* config/abi/post/sparc64-linux-gnu: New directory.
	* config/abi/post/sparc64-linux-gnu/baseline_symbols.txt: New file.
	* config/abi/post/sparc64-linux-gnu/32: New directory.
	* config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt: New file.

From-SVN: r269096
2019-02-22 07:25:52 +00:00
Jason Merrill
9adf74a36e PR c++/87685 - generic lambda 'this' capture error.
The standard says that in a generic lambda we should speculatively capture
'this' if we see a call to an overload set that contains a non-static member
function, but it seems wrong to reject the program if we can't capture,
since it might not actually be needed.

	* lambda.c (lambda_expr_this_capture): Change add_capture_p to int.
	(maybe_generic_this_capture): Pass -1.

From-SVN: r269095
2019-02-22 01:47:37 -05:00
Jason Merrill
d36b4bf752 PR c++/88394 - ICE with VLA init-capture.
We mostly use is_normal_capture_proxy to decide whether or not to use
DECL_CAPTURED_VARIABLE; we could just check whether it's set.  VLA capture
is still mostly broken, but this fixes this ICE.

	* lambda.c (is_normal_capture_proxy): Check DECL_CAPTURED_VARIABLE.

From-SVN: r269094
2019-02-21 21:47:33 -05:00
Jason Merrill
c8b7e64d36 PR c++/88869 - C++17 ICE with CTAD and explicit specialization.
The members of an explicit specialization of a class template don't have the
template parameters of that class template, so we shouldn't try to provide
arguments for them.  Only set outer_args when the class is an instantiation.

	* pt.c (do_class_deduction): Don't include explicit specialization
	args in outer_args.

From-SVN: r269093
2019-02-21 21:08:05 -05:00