Commit Graph

178485 Commits

Author SHA1 Message Date
GCC Administrator
049fbbdc60 Daily bump. 2020-07-27 00:16:20 +00:00
Hans-Peter Nilsson
5630c40fc7 gcc.dg/tree-ssa/reassoc-20.c: Adjust for mmix.
The expression of interest looks like "e_5 = a::0_1 + b::1_2;" for
mmix-knuth-mmixware, while other targets have a "." instead of the
"::".  ISTM the most useful change here is not to disable the test,
but to add an optional character in the matched expression to match
the "extra" ":".  Also checked cris-elf to assert that the expression
still passes for an "ordinary" ELF target.

gcc/testsuite:
	* gcc.dg/tree-ssa/reassoc-20.c: Adjust for mmix.
2020-07-27 02:09:58 +02:00
Hans-Peter Nilsson
39ddfef9a5 mmix: Don't turn off .hidden support.
In 2012 e2769e908a915ebbc/r192344, I added the following lines, that I
now delete.  I've changed my mind: ELF-related targets based on gas,
that support only static linking, have .hidden "for free", regardless
of the visibility of the hidden object in the linked executable.  No
regressions for mmix-knuth-mmixware and "fixes":

FAIL: gcc.dg/torture/pr94947-1.c   -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects  (test for excess errors)
Excess errors:
lto1: warning: visibility attribute not supported in this configuration; ignored [-Wattributes]

...a warning which is emitted for "all" LTO tests (of which most have
warnings filtered out); LTO "thinks" all supported targets have
.hidden support.

gcc:
	* configure.ac (out-of-tree linker .hidden support): Don't turn off
	for mmix-knuth-mmixware.
	* configure: Regenerate.
2020-07-27 00:08:54 +02:00
Patrick Palka
798ff1c3e1 c++: Add testcase for [PR79504]
We successfully compile this testcase ever since r8-5270.

gcc/testsuite/ChangeLog:

	PR c++/79504
	* g++.dg/cpp0x/decltype79.C: New test.
2020-07-26 13:51:02 -04:00
Aaron Sawdey
e398fcb9ce rs6000: add option -mblock-ops-unaligned-vsx
This option is mostly being added to provide -mno-block-ops-unaligned-vsx.
The default is set the same as -mefficient-unaligned-vsx. This option will
control the use of unaligned VSX loads/stores in the inline expansion
of memcpy() and memmove(). The use case for this would be if you're
compiling code that is doing a memcpy to memory mapped device memory
that is cache-inhibited. On some powerpc processors this requires the
unaligned vsx ops to be emulated by the kernel which is very slow.

gcc/ChangeLog:

	* config/rs6000/rs6000.c (rs6000_option_override_internal):
	Set the default value for -mblock-ops-unaligned-vsx.
	* config/rs6000/rs6000.opt: Add -mblock-ops-unaligned-vsx.
	* doc/invoke.texi: Document -mblock-ops-unaligned-vsx.
2020-07-26 12:11:47 -05:00
Tobias Burnus
2e764ae1d6 libgfortran: Skip integer-kind=16 check for amdgcn
libgfortran/ChangeLog:

	PR target/96306
	* configure.ac: Add LIBGOMP_CHECKED_INT_KINDS and
	LIBGOMP_CHECKED_REAL_KINDS and use it for to skip
	integer kind=16 checks for amdgcn.
	* Makefile.am (kinds.h, selected_int_kind.inc,
	selected_real_kind.inc): Pass them on.
	* mk-kinds-h.sh: Takes to-be-check kinds as argument.
	* mk-sik-inc.sh: Likewise.
	* mk-srk-inc.sh: Likewise.
	* Makefile.in: Regenerate.
	* configure: Regenerate.
2020-07-26 07:20:24 +02:00
Hans-Peter Nilsson
2ab2694476 gcc.dg/tree-ssa/forwprop-36.c: Adjust for mmix
The label of interest here is "b.0_2" for
e.g. x86_64-pc-linux-gnu but "b::1_2" for mmix-knuth-mmixware.
The test seems to be of some interest for mmix (hey, gcc
open-coded 128-bit integer support behind my back!) so I didn't
want to just disable it.  I also didn't want to obscure the
matching pattern by generalizing it, so instead I added a
separate matching pattern.

gcc/testsuite:
	* gcc.dg/tree-ssa/forwprop-36.c: Adjust for mmix.
2020-07-26 03:33:15 +02:00
Hans-Peter Nilsson
b5087b28b0 gcc.dg/torture/pr59330.c: Disable for mmix
With the dejagnu status-wrapper, there's a reference to write in
each executable, which for mmix in newlib has a reference to a
variable defined in open, which for mmix in newlib has a
reference to sprintf (oops!) and the dependency-chain goes on;
ad finitum there's a reference to malloc, which in default
newlib is colocated with free; the same file
newlib/libc/stdlib/malloc.c.

Not being compiled with -ffunction-sections, they're emitted in
the same section (.text) and thus inseparable: you can't
override just one of them as in this test, or else you'll get:

<X>/pre/mmix/bin/ld: <X>/gccobj/mmix/./newlib/libc.a(lib_a-malloc.o): in function `free':
<X>/gcc/newlib/libc/stdlib/malloc.c:169: multiple definition of `free'; /tmp/ccvRA0zb.o:(.text+0x0): first defined here
collect2: error: ld returned 1 exit status
compiler exited with status 1
FAIL: gcc.dg/torture/pr59330.c   -O0  (test for excess errors)

I'm using a dg-skip-if here instead of starting a hardly
scalable dg-do target selector.  I'm not keying on
effective-target unwrapped because the dependency-chain is
target-specific rather than dejagnu status-wrapper-specific.

gcc/testsuite:
	* gcc.dg/torture/pr59330.c: Disable for mmix.
2020-07-26 02:44:02 +02:00
GCC Administrator
ae2e0bc19b Daily bump. 2020-07-26 00:16:21 +00:00
Hans-Peter Nilsson
8e807b59d8 config/mmix/mmix.c (TARGET_ASM_OUTPUT_IDENT): Override.
Funny that default_asm_output_ident_directive isn't the default...
Anyway, since dot-pseudos like .ident are treated as comments by
mmixal, there's nothing lost compatibilitywise by supporting it.
If mmix-knuth-mmixware had included elfos.h this'd have been the
default.  There might be enough reason to do that; relocatable objects
are ELF but (by default) links to produce mmo.  Fixes
c-c++-common/ident-1b.c and 2b in C and C++ testing.  Committed.

gcc:
	* config/mmix/mmix.c (TARGET_ASM_OUTPUT_IDENT): Override the default
	with default_asm_output_ident_directive.
2020-07-25 23:25:09 +02:00
Iain Sandoe
e0e546635a C++, testsuite: Adjust pure-virtual1.C options for Darwin.
Darwin's static linker expects, by default, that all linkage will
be satisfied (even for weak items).  This allows the two-level
namespace to work even for weak cases.

However, there's an option to make it behave in a similar manner
to ELF.  This is needed for the pure-virtual1.C testcase to pass
on Darwin.

gcc/testsuite/ChangeLog:

	* g++.dg/abi/pure-virtual1.C: Add dynamic_lookup option
	for Darwin.
2020-07-25 21:48:06 +01:00
Martin Sebor
e0633768a1 Fix PR c++/96310 - Ignoring -Wnonnull via pragma gcc diagnostics still produces an unwanted note.
gcc/c-family/ChangeLog:
	PR c++/96310
	* c-common.c (check_nonnull_arg): Print note only when warning was
	issued.
2020-07-25 14:24:24 -06:00
Andrew Stubbs
8d0b2b3374 amdgcn: Enable TImode
This enables types __int128 et al for move, add, subtract, and logical
operations.  At least shift, rotate, multiple, divide, and modulus are broken
so we can expect some test failures.

This is required now because libgomp no longer builds without __int128.

An additional patch will be required to unbreak the libgfortran build.

gcc/ChangeLog:

	* config/gcn/gcn.c (gcn_scalar_mode_supported_p): New function.
	(TARGET_SCALAR_MODE_SUPPORTED_P): New define.
2020-07-25 15:44:46 +01:00
GCC Administrator
53256ee3d5 Daily bump. 2020-07-25 00:16:22 +00:00
David Edelsohn
6643d2367f aix: Support GCC64 for AIX 7.1.
gcc/ChangeLog:

2020-07-24  David Edelsohn  <dje.gcc@gmail.com>
	    Clement Chigot  <clement.chigot@atos.net>

	* config.gcc (powerpc-ibm-aix7.1): Use t-aix64 and biarch64 for
	cpu_is_64bit.
	* config/rs6000/aix71.h (ASM_SPEC): Remove aix64 option.
	(ASM_SPEC32): New.
	(ASM_SPEC64): New.
	(ASM_CPU_SPEC): Remove vsx and altivec options.
	(CPP_SPEC_COMMON): Rename from CPP_SPEC.
	(CPP_SPEC32): New.
	(CPP_SPEC64): New.
	(CPLUSPLUS_CPP_SPEC): Rename to CPLUSPLUS_CPP_SPEC_COMMON..
	(TARGET_DEFAULT): Use 64 bit mask if BIARCH.
	(LIB_SPEC_COMMON): Rename from LIB_SPEC.
	(LIB_SPEC32): New.
	(LIB_SPEC64): New.
	(LINK_SPEC_COMMON): Rename from LINK_SPEC.
	(LINK_SPEC32): New.
	(LINK_SPEC64): New.
	(STARTFILE_SPEC): Add 64 bit version of crtcxa and crtdbase.
	(ASM_SPEC): Define 32 and 64 bit alternatives using DEFAULT_ARCH64_P.
	(CPP_SPEC): Same.
	(CPLUSPLUS_CPP_SPEC): Same.
	(LIB_SPEC): Same.
	(LINK_SPEC): Same.
	(SUBTARGET_EXTRA_SPECS): Add new 32/64 specs.
	* config/rs6000/aix72.h (TARGET_DEFAULT): Use 64 bit mask if BIARCH.
	* config/rs6000/defaultaix64.h: Delete.
2020-07-24 19:57:14 -04:00
Segher Boessenkool
4e57791005 rs6000: Remove -mpower10 option (PR95907)
The only way to enable or disable Power10 insns (ISA 3.1 insns) should
be via the -mcpu= switch.  This patch disables the -mpower10 options the
same way the -mdirect-move switch is neutered already.  That is not an
ideal way, but it works, it is not the first, and doing it properly is
more work, and will happen later.

2020-07-24  Segher Boessenkool  <segher@kernel.crashing.org>

	* config/rs6000/rs6000.opt: Delete -mpower10.

gcc/testsuite/
	* gcc.target/powerpc/pr95907.c: New.
2020-07-24 23:23:07 +00:00
Hans-Peter Nilsson
f8f3a0102c c-c++-common/pr56493.c: Allow ":" in label, for mmix.
No dots in labels for MMIX: internal labels instead contain ":".

gcc/testsuite:

	* c-c++-common/pr56493.c: Allow ":" in label, for mmix.
2020-07-25 00:05:42 +02:00
Hans-Peter Nilsson
52cdac6823 testsuite: Adjust patchable_function tests for mmix.
There's no reason anyone would want to use the "patchable function"
feature for MMIX and also no reason to exclude those tests.  For MMIX,
the NOP equivalent is SWYM ("swymming" is a healthy exercise).
Text-wise, making the tests pass by adjusting the regexp, is shorter,
and it seems unlikely to both appear as a mnemonic for other targets
*and* being emitted in uppercase.

gcc/testsuite:

	* c-c++-common/patchable_function_entry-decl.c,
	c-c++-common/patchable_function_entry-default.c,
	c-c++-common/patchable_function_entry-definition.c: Adjust for mmix.
2020-07-24 23:50:05 +02:00
Sunil K Pandey
07c70c29af Add testcase to show kernel issue got fixed by pr95237 [PR96192]
This test case, extracted from PR 95645, was failing because alignment
of local long long variable got lowered from 8 bytes to 4 bytes in
adjust alignment pass, which triggered assert failure.

This test case passes now because PR 95237 fix only allows lowering of
alignment of local variables in the front end.  As a result, alignment
of local long long variable no longer gets lowered in adjust alignment
pass.

gcc/testsuite/ChangeLog:

	PR target/96192
	* c-c++-common/pr96192-1.c: New test.
2020-07-24 14:17:44 -07:00
Alexandre Oliva
49341f3bd4 add offload target to testname for pass/fail message
Offload tests that scan dump files may run multiple times, once per
offload target, but the test result messages do not mention the
offload target, so we may seem to have repeated results.  Fixed by
modifying the test name so that it contains the offload target name.


Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
for  gcc/testsuite/ChangeLog

	* lib/scanoffload.exp (scoff-testname, scoff-adjust): New.
	(scoff): Call them.
2020-07-24 16:13:53 -03:00
Alexandre Oliva
0e3ad7e4d0 revamp intelmic-mkoffload aux dump names
Rework intelmic-mkoffload into the new aux and dump file naming
semantics.  Obey -save-temps.


Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
for  gcc/ChangeLog

	* config/i386/intelmic-mkoffload.c
	(generate_target_descr_file): Use dumppfx for save_temps
	files.  Pass -dumpbase et al down to the compiler.
	(generate_target_offloadend_file): Likewise.
	(generate_host_descr_file): Likewise.
	(prepare_target_image): Likewise.  Move out_obj_filename
	setting...
	(main): ... here.  Detect -dumpbase, set dumppfx too.
2020-07-24 16:13:42 -03:00
Alexandre Oliva
c1b9cb1a83 [PR96230] some -dumpbase-ext fixes
The initial bug report was that compiling (-c) with -dumpbase ""
-dumpbase-ext .<ext> crashes the driver.

The verification of -dumpbase-ext against -dumpbase doesn't cover the
case in which -dumpbase activates backward-compatibility mode.

I added a test for that, and for -dumpbase-ext without -dumpbase,
trying to make it work in a sensible way, as if applied to the default
-dumpbase for each file.  It turned out that this made for too much
complexity in dealing with suffixes derived from input filenames, so I
gave that up and returned to discarding -dumpbase-ext as documented,
ending up with a change identical to that in the original bug report.

I also thought I caught an off-by-one error in the initial
verification, that caused dumpbase_ext to be discarded if it was
identical to the specified dumpbase, but that turned out to be
intentional as well, so I put in comments and a test to reflect it.

Finally, an earlier version of the newly-added tests used "$var.ext"
in an expected output list, which showed me the handling of string
expansion was incorrect.  Reworked the expr into an eval to make that
work, and, absent any reliance on post-eval adjustments to so-expanded
output names, I arranged for the adjustments to be skipped after eval.


Co-Authored-By: "Zhanghaijian (A)" <z.zhanghaijian@huawei.com>
for  gcc/ChangeLog

	PR driver/96230
	* gcc.c (process_command): Adjust and document conditions to
	reset dumpbase_ext.

for  gcc/testsuite/ChangeLog

	PR driver/96230
	* gcc.misc-tests/outputs.exp: Add tests with -dumpbase-ext,
	with identical -dumpbase, with -dumpbase "", and without any
	-dumpbase.
	(outest): Fix "" expansion in expected outputs, skip
	adjustments.
2020-07-24 16:13:39 -03:00
Alexandre Oliva
5fa1767aa4 [PR95720] protect gluefile and wrap_flags with -Wl too
The testglue object file gets interpreted as another input file,
changing the dump and aux output names in GCC unless it is protected
by -Wl, like board file-named extra inputs.

Refactor the code that modifies the board settings so that it can be
used to modify regular variables as well, and do so.


for  gcc/testsuite/ChangeLog

	PR testsuite/95720
	* lib/gcc-defs.exp (gcc_adjust_linker_flags_list): Split out of...
	(gcc_adjust_linker_flags): ... this.  Protect gluefile and
	wrap_flags.
	* gcc.misc-tests/outputs.exp: Use gcc_adjust_linker_flags_list.
2020-07-24 16:13:37 -03:00
Dominique d'Humieres
aa7e7eff5e PR 93567, G edit descriptor uses E instead of F editing in rounding mode UP.
The switch between FMT_E and FMT_F is based on the absolute value.
Set r=0 for rounding toward zero and r = 1 otherwise.
If (exp_d - m) == 1 there is no rounding needed.

libgfortran/ChangeLog:

	PR fortran/93567
	* io/write_float.def (determine_en_precision): Fix switch between
	FMT_E and FMT_F.

gcc/testsuite/ChangeLog:

	PR fortran/93567
	* gfortran.dg/round_3.f08: Add test cases.
2020-07-24 20:47:47 +02:00
Dominique d'Humieres
05e0971bcf PR 93592 - Invalid UP/DOWN rounding with EN descriptor.
The fix is obvious (I have added a comment). The tests are probably
an overkill, but it does not hurt.

libgfortran/ChangeLog:

	PR fortran/93592
	* io/write_float.def (build_float_string): Do not reset
	  nbefore for FMT_F and FMT_EN.

gcc/testsuite/ChangeLog:

	PR fortran/93592
	* gfortran.dg/fmt_en.f90: Adjust test.
	* gfortran.dg/fmt_en_rd.f90: New test.
	* gfortran.dg/fmt_en_rn.f90: New test.
	* gfortran.dg/fmt_en_ru.f90: New test.
	* gfortran.dg/fmt_en_rz.f90: New test.
2020-07-24 20:47:30 +02:00
Patrick Palka
048ba9c02d c++: Add testcase for [PR81339]
We correctly reject this testcase since r11-434, i.e. since the fix for
PR c++/57943.

gcc/testsuite/ChangeLog:

	PR c++/81339
	* g++.dg/cpp0x/decltype78.C: New test.
2020-07-24 14:39:10 -04:00
Matthias Klose
29a14a1a90 iDefine TARGET_OFFLOAD_OPTIONS for AArch64
2020-07-24  Matthias Klose  <doko@ubuntu.com>

	* config/aarch64/aarch64.c (+aarch64_offload_options,
	TARGET_OFFLOAD_OPTIONS): New.
2020-07-24 16:17:44 +02:00
Uros Bizjak
8c7bb54080 i386: Emit mfence_sse2 for -Os [PR95750]
2020-07-24  Uroš Bizjak  <ubizjak@gmail.com>

gcc/ChangeLog:
	PR target/95750
	* config/i386/sync.md (mmem_thread_fence): Emit mfence_sse2 for -Os.
2020-07-24 16:00:39 +02:00
Thomas Schwinge
fdc9db2539 [testsuite] Unset 'offload_target' after use
..., so that we don't leak this into '*.exp' files running later.

This is relevant after commit efc16503ca "handle
dumpbase in offloading, adjust testsuite" -- I was confused why in a
(simplified) testing sequence as follows:

  default 'libgomp.c/c.exp'
  default 'libgomp.oacc-c/c.exp'
  '-m32' 'libgomp.c/c.exp'
  '-m32' 'libgomp.oacc-c/c.exp'

..., the "'-m32' 'libgomp.c/c.exp'" variant would not execute any offloading
dump scanning.  The reason is that the "default 'libgomp.oacc-c/c.exp'" variant
ends with 'offload_target=disable' set, so that's what the "'-m32'
'libgomp.c/c.exp'" variant would then see, in particular
'gcc/testsuite/lib/scanoffload.exp:scoff'.

	libgomp/
	* testsuite/libgomp.oacc-c++/c++.exp: Unset 'offload_target' after
	use.
	* testsuite/libgomp.oacc-c/c.exp: Likewise.
	* testsuite/libgomp.oacc-fortran/fortran.exp: Likewise.
2020-07-24 14:00:43 +02:00
Thomas Schwinge
3407bfc136 [testsuite] Fix TCL syntax error in 'scan-dump-dem-not'
ERROR: [...]: error executing dg-final: missing close-bracket

Bug introduced in commit 2ef1bce664 (r188996),
long ago.

	gcc/testsuite/
	* lib/scandump.exp (scan-dump-dem-not): Fix TCL syntax error.
2020-07-24 13:21:51 +02:00
Szabolcs Nagy
ab240ab509 aarch64: add PAC-RET protection to libitm sjlj.S
_ITM_beginTransaction is a 'returns_twice' function that saves x30
on the stack as part of gtm_jmpbuf (that is passed down to
GTM_begin_transaction), but the saved x30 is also used for return.

The return path should be protected so we don't leave an
  ldp x29, x30, [sp]
  ret
gadget in the code, so x30 is signed on function entry. This
exposes the signed address in the gtm_jmpbuf too. The jmpbuf does
not need a signed address since GTM_longjmp uses
  ldp x29, x30, [x1]
  br x30
and with BTI there is a BTI j at the _ITM_beginTransaction call site
where this jump returns. Using PAC does not hurt: the gtm_jmpbuf is
internal to libitm and its layout is only used by sjlj.S so the
signed address does not escape. Saving signed x30 into gtm_jmpbuf
provides a bit of extra protection, but more importantly it allows
adding the PAC-RET support without changing the existing code much.

In theory bti and pac-ret protection can be added unconditionally
since the instructions are in the nop space, in practice they
can cause trouble if some tooling does not understand the gnu
property note (e.g. old binutils) or some unwinder or debugger
does not understand the new dwarf op code used for pac-ret (e.g
old gdb). So the code is written to only support branch-protection
according to the code generation options.

libitm/ChangeLog:

	* config/aarch64/sjlj.S: Add conditional pac-ret protection.
2020-07-24 11:44:53 +01:00
Szabolcs Nagy
edfb3a30a6 aarch64: add PAC GNU property note to libgcc lse.S
This note is not used anywhere currently but it is supposed to mark
objects if the return address is protected with PAC on the stack.
Since lse.S only has leaf functions the return address is never
saved on the stack so we can add the note.

The note is only added if pac-ret is enabled because it can cause
problems with old linkers and we don't have checks for that. This
can be changed later to be unconditional, for now it is consistent
with how gcc generates the notes.

libgcc/ChangeLog:

	* config/aarch64/lse.S: Add PAC property note.
2020-07-24 11:44:43 +01:00
H.J. Lu
b0e5ec934e Restrict PR middle-end/95886 x86 test to !ia32
Since gcc.target/i386/memcpy-pr95886.c requires 64-bit register, restrict
it to !ia32.

	PR middle-end/95886
	* gcc.target/i386/memcpy-pr95886.c: Restrict test to !ia32.
2020-07-23 19:27:16 -07:00
GCC Administrator
9bb403dca6 Daily bump. 2020-07-24 00:16:20 +00:00
Clément Chigot
83cc5e2b2f libgo: add AIX FAT libraries support
AIX-style libraries contains both 32 and 64 bit shared objects.
This patch follows the adding of FAT libraries support in other gcc
libraries (libgcc, listdc++, etc).

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/242957
2020-07-23 14:26:36 -07:00
Martin Sebor
8598657c60 Restrict test to LP64.
gcc/testsuite/ChangeLog:

	PR testsuite/95886
	* gcc.target/i386/memcpy-pr95886.c: Restrict test to LP64.
2020-07-23 14:10:14 -06:00
Julian Brown
25bce75c77 openacc: Remove unnecessary detach finalization
The call to gomp_detach_pointer in gomp_unmap_vars_internal does not
need to force finalization, and doing so may mask mismatched pointer
attachments/detachments. This patch removes the forcing.

2020-07-16  Julian Brown  <julian@codesourcery.com>
	    Thomas Schwinge  <thomas@codesourcery.com>

libgomp/
	* target.c (gomp_unmap_vars_internal): Remove unnecessary forcing of
	finalization for detach operation.
	* testsuite/libgomp.oacc-c-c++-common/structured-detach-underflow.c:
	New test.

Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com>
2020-07-23 12:50:07 -07:00
Roger Sayle
d4b3ea941b Resolve regression rtl-optimization/96298. Sorry for the breakage.
2020-07-23  Roger Sayle  <roger@nextmovesoftware.com>

gcc/ChangeLog
	PR rtl-optimization/96298
	* simplify-rtx.c (simplify_binary_operation_1) [XOR]: Xor doesn't
	distribute over xor, so (a^b)^(c^b) is not the same as (a^c)^b.
2020-07-23 18:48:54 +01:00
Patrick Palka
914966e499 contrib/vimrc: detect more C-like files
Currently this script doesn't set the indentation style for the standard
library headers under libstdc++/ because they lack a file extension.
But they do have a modeline, so the file type is still set appropriately
by Vim.  So by inspecting &filetype, we can also detect these standard
library headers as C-like files.

contrib/ChangeLog:

	* vimrc (SetStyle): Also inspect &filetype to determine whether
	a file is C-like.
2020-07-23 13:34:00 -04:00
Tobias Burnus
084dc63a02 OpenMP: Support 'lastprivate (conditional:' in Fortran
gcc/fortran/ChangeLog:

	* gfortran.h (gfc_omp_namelist): Add lastprivate_conditional.
	* openmp.c (gfc_match_omp_clauses): Handle 'conditional:'
	modifier of 'lastprivate'.
	* trans-openmp.c (gfc_omp_clause_default_ctor): Don't assert
	on OMP_CLAUSE__CONDTEMP_ and other OMP_*TEMP_.
	(gfc_trans_omp_variable_list): Handle lastprivate_conditional.

gcc/testsuite/ChangeLog:

	* gfortran.dg/gomp/lastprivate-conditional-1.f90: New test.
	* gfortran.dg/gomp/lastprivate-conditional-2.f90: New test.
	* gfortran.dg/gomp/lastprivate-conditional-3.f90: New test.
	* gfortran.dg/gomp/lastprivate-conditional-4.f90: New test.
	* gfortran.dg/gomp/lastprivate-conditional-5.f90: New test.
2020-07-23 17:37:35 +02:00
Arnaud Charlet
ad1bea3a4b [Ada] Stub CUDA_Execute and CUDA_Global pragmas
This commit adds CUDA_Execute and CUDA_Global to the list of allowed
pragmas. It also implements basic validation of said pragmas.

gcc/ada/

	* aspects.ads: Declare CUDA_Global as aspect.
	* einfo.ads: Use Flag118 for the Is_CUDA_Kernel flag.
	(Set_Is_CUDA_Kernel): New function.
	(Is_CUDA_Kernel): New function.
	* einfo.adb (Set_Is_CUDA_Kernel): New function.
	(Is_CUDA_Kernel): New function.
	* par-prag.adb (Prag): Ignore Pragma_CUDA_Execute and
	Pragma_CUDA_global.
	* rtsfind.ads: Define CUDA.Driver_Types.Stream_T and
	CUDA.Vector_Types.Dim3 entities
	* rtsfind.adb: Define CUDA_Descendant subtype.
	(Get_Unit_Name): Handle CUDA_Descendant packages.
	* sem_prag.ads: Mark CUDA_Global as aspect-specifying pragma.
	* sem_prag.adb (Analyze_Pragma): Validate Pragma_CUDA_Execute and
	Pragma_CUDA_Global.
	* snames.ads-tmpl: Define Name_CUDA_Execute and Name_CUDA_Global.
2020-07-23 09:56:56 -04:00
Arnaud Charlet
3968b02a4b [Ada] Ada2020: AI12-0027 Access values and unaliased component
Access values should never designate unaliased components.
This new feature is documented in AI12-0027-1.

gcc/ada/

	* sem_ch13.ads (Same_Representation): Renamed as
	Has_Compatible_Representation because now the order of the arguments
	are taken into account; its formals are also renamed as Target_Type
	and Operand_Type.
	* sem_ch13.adb (Same_Representation): Renamed and moved to place the
	routine in alphabetic order.
	* sem_attr.adb (Prefix_With_Safe_Accessibility_Level): New subprogram.
	(Resolve_Attribute): Check that the prefix of attribute Access
	does not have a value conversion of an array type.
	* sem_res.adb (Resolve_Actuals): Remove restrictive check on view
	conversions which required matching value of Has_Aliased_Components of
	formals and actuals.
	* exp_ch4.adb (Handle_Changed_Representation): Update call to
	Same_Representation.
	(Expand_N_Type_Conversion): Update call to Same_Representation.
	* exp_ch5.adb (Change_Of_Representation): Update call to
	Same_Representation.
	* exp_ch6.adb (Add_Call_By_Copy_Code): Update call to
	Same_Representation.
	(Expand_Actuals): Update call to Same_Representation.
	(Expand_Call_Helper): Update call to Same_Representation.
2020-07-23 09:42:06 -04:00
Dong JianQiang
de8bfcc8e4
gcov-tool: Fix merging of different endian coverage data [PR96267]
2020-07-21  Dong JianQiang  <dongjianqiang2@huawei.com>

gcc/ChangeLog:

	PR gcov-profile/96267
	* gcov-io.c (gcov_open): enable if IN_GCOV_TOOL.
2020-07-23 15:04:17 +02:00
Tobias Burnus
2631d95ae2 libomp: Add omp_depend_kind to omp_lib.{f90,h}
gcc/fortran/ChangeLog:

	* intrinsic.texi (OMP_LIB_KINDS): Add omp_depend_kind.

libgomp/ChangeLog:

	* configure.ac: Add OMP_DEPEND_KIND and OMP_INT128_SIZE.
	* libgomp_f.h.in (omp_check_defines): Check whether
	sizeof of determined Fortran kind and C typedef match.
	* omp_lib.f90.in: Add omp_depened_kind.
	* omp_lib.h.in: Likewise; fix omp_alloctrait_key_kind.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
2020-07-23 15:02:15 +02:00
Arnaud Charlet
0c111868b7 [Ada] Add push/pop capability in Output
Add the capability to use the Write_* procedures in an environment where
you want to write debugging info but still use them to write to other
files (such a C source files).

gcc/ada/

	* output.ads (Push_Output, Pop_Output): New procedures.
	* output.adb (FD_Array, FD_Stack, FD_Stack_Idx): New type and vars.
	(Push_Output, Pop_Output): New procedures.
2020-07-23 08:57:22 -04:00
Kewen Lin
2949e08657 rs6000: Rename function adjust_vectorization_cost
This patch is to rename the existing function adjust_vectorization_cost
to rs6000_adjust_vect_cost_per_stmt, to avoid some confusion.

gcc/ChangeLog:

	* config/rs6000/rs6000.c (adjust_vectorization_cost): Renamed to ...
	(rs6000_adjust_vect_cost_per_stmt): ... here.
	(rs6000_add_stmt_cost): Rename adjust_vectorization_cost to
	rs6000_adjust_vect_cost_per_stmt.
2020-07-23 07:40:22 -05:00
Kewen Lin
ead2be56f0 ivopts: Handle vector with length IFNs
This patch is to handle vector with length internal functions
IFN_LEN_LOAD and IFN_LEN_STORE in IVOPTS.

gcc/ChangeLog:

	* tree-ssa-loop-ivopts.c (get_mem_type_for_internal_fn): Handle
	IFN_LEN_LOAD and IFN_LEN_STORE.
	(get_alias_ptr_type_for_ptr_address): Likewise.
2020-07-23 07:40:09 -05:00
Tobias Burnus
3eb72737a2 OpenMP: Update gcc/fortran/*.texi
gcc/fortran/ChangeLog:

	* gfortran.texi (Standards): Update URL; state that OpenMP 4.5
	is supported and 5.0 is partially.
	* intrinsic.texi (OpenMP Modules): Refer also to OpenMP 5.0;
	(OMP_LIB): Add missing derived type and new named constants.
2020-07-23 12:55:53 +02:00
Martin Liska
24c35a5ef3
gcov: create folders with 0777.
libgcc/ChangeLog:

	PR gcov-profile/96035
	* libgcov-driver-system.c: Create gcov folders with 0777
	so that it respects a system umask.
2020-07-23 12:20:40 +02:00
Martin Liska
02cada26e4
gcc-changelog: fix when somebody reverts a backport
contrib/ChangeLog:

	* gcc-changelog/git_commit.py: When reverting a backport,
	we should print only Revert header.
2020-07-23 10:43:25 +02:00