Commit Graph

182320 Commits

Author SHA1 Message Date
Jakub Jelinek
f4ae1f2c43 maintainer-scripts: Use /sourceware/snapshot-tmp/gcc as temp directory if possible
> https://gcc.gnu.org/pipermail/gccadmin/2020q4/017037.html
>
> OSError: [Errno 28] No space left on device:
> '/tmp/tmp.Zq3p6D4MxS/gcc/.git/objects/objn31xpefh' ->
> '/tmp/tmp.Zq3p6D4MxS/gcc/.git/objects/db/ffb02a4bcdd4ec04af3db75d86b8cc2e52bdff'
>
> Maybe change the script to use /sourceware/snapshot-tmp/gcc (which has
> rather more space) instead of /tmp?

This patch implements that.

2020-12-17  Jakub Jelinek  <jakub@redhat.com>

	* update_version_git: Put BASEDIR into /sourceware/snapshot-tmp/gcc
	if it exist.
2020-12-17 00:15:23 +01:00
Piotr Kubaj
2a4183234a rs6000: Add support for powerpc64le-unknown-freebsd
This implements support for powerpc64le architecture on FreeBSD.  Since
we don't have powerpcle (32-bit), I did not add support for powerpcle
here. This remains to be changed if there is powerpcle support in the
future.

2020-12-15  Piotr Kubaj  <pkubaj@FreeBSD.org>

gcc/
	* config.gcc (powerpc*le-*-freebsd*): Add.
	* configure.ac (powerpc*le-*-freebsd*): Ditto.
	* configure: Regenerate.
	* config/rs6000/freebsd64.h (ASM_SPEC_COMMON): Use ENDIAN_SELECT.
	(DEFAULT_ASM_ENDIAN): Add little endian support.
	(LINK_OS_FREEBSD_SPEC64): Ditto.
2020-12-16 22:54:51 +00:00
Ian Lance Taylor
e38c912700 test: add new Go tests from source repo 2020-12-16 14:53:31 -08:00
Martin Uecker
58a45ce44a C: Drop qualifiers of assignment expressions. [PR98047]
ISO C17 6.5.15.1 specifies that the result is the
type the LHS would have after lvalue conversion.

2020-12-16  Martin Uecker  <muecker@gwdg.de>

gcc/c/
	PR c/98047
	* c-typeck.c (build_modify_expr): Drop qualifiers.

gcc/testsuite/
	PR c/98047
	* gcc.dg/qual-assign-7.c: New test.
2020-12-16 23:51:25 +01:00
Martin Uecker
ec13758ed4 C: Avoid incorrect warning for volatile in compound expressions [PR98260]
2020-12-16  Martin Uecker  <muecker@gwdg.de>

gcc/c/
	PR c/98260
	* c-parser.c (c_parser_expression): Look into
	nop expression when marking expressions as read.

gcc/testsuite/
	PR c/98260
	* gcc.dg/unused-9.c: New test.
2020-12-16 23:43:42 +01:00
Takayuki 'January June' Suwa
64a54505ec gcc: xtensa: rearrange DI mode constant loading
2020-12-16  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
gcc/
	* config/xtensa/xtensa.c (xtensa_emit_move_sequence): Try to
	replace 'l32r' with 'movi' + 'slli' when optimizing for size.
	* config/xtensa/xtensa.md (movdi): Split loading DI mode constant
	into register pair into two loads of SI mode constants.
2020-12-16 13:09:02 -08:00
Tamar Christina
db253e8b1d Arm: MVE: Split refactoring of remaining complex instrinsics
This refactors the complex numbers bits of MVE to go through the same unspecs
as the NEON variant.

This is pre-work to allow code to be shared between NEON and MVE for the complex
vectorization patches.

gcc/ChangeLog:

	* config/arm/arm_mve.h (__arm_vcmulq_rot90_f16):
	(__arm_vcmulq_rot270_f16, _arm_vcmulq_rot180_f16, __arm_vcmulq_f16,
	__arm_vcmulq_rot90_f32, __arm_vcmulq_rot270_f32,
	__arm_vcmulq_rot180_f32, __arm_vcmulq_f32, __arm_vcmlaq_f16,
	__arm_vcmlaq_rot180_f16, __arm_vcmlaq_rot270_f16,
	__arm_vcmlaq_rot90_f16, __arm_vcmlaq_f32, __arm_vcmlaq_rot180_f32,
	__arm_vcmlaq_rot270_f32, __arm_vcmlaq_rot90_f32): Update builtin calls.
	* config/arm/arm_mve_builtins.def (vcmulq_f, vcmulq_rot90_f,
	vcmulq_rot180_f, vcmulq_rot270_f, vcmlaq_f, vcmlaq_rot90_f,
	vcmlaq_rot180_f, vcmlaq_rot270_f): Removed.
	(vcmulq, vcmulq_rot90, vcmulq_rot180, vcmulq_rot270, vcmlaq,
	vcmlaq_rot90, vcmlaq_rot180, vcmlaq_rot270): New.
	* config/arm/iterators.md (mve_rot): Add UNSPEC_VCMLA, UNSPEC_VCMLA90,
	UNSPEC_VCMLA180, UNSPEC_VCMLA270, UNSPEC_VCMUL, UNSPEC_VCMUL90,
	UNSPEC_VCMUL180, UNSPEC_VCMUL270.
	(VCMUL): New.
	* config/arm/mve.md (mve_vcmulq_f<mode, mve_vcmulq_rot180_f<mode>,
	mve_vcmulq_rot270_f<mode>, mve_vcmulq_rot90_f<mode>, mve_vcmlaq_f<mode>,
	mve_vcmlaq_rot180_f<mode>, mve_vcmlaq_rot270_f<mode>,
	mve_vcmlaq_rot90_f<mode>): Removed.
	(mve_vcmlaq<mve_rot><mode>, mve_vcmulq<mve_rot><mode>,
	mve_vcaddq<mve_rot><mode>, cadd<rot><mode>3, mve_vcaddq<mve_rot><mode>):
	New.
	* config/arm/unspecs.md (UNSPEC_VCMUL90, UNSPEC_VCMUL270, UNSPEC_VCMUL,
	UNSPEC_VCMUL180): New.
	(VCMULQ_F, VCMULQ_ROT180_F, VCMULQ_ROT270_F, VCMULQ_ROT90_F,
	VCMLAQ_F, VCMLAQ_ROT180_F, VCMLAQ_ROT90_F, VCMLAQ_ROT270_F): Removed.
2020-12-16 20:45:52 +00:00
Tamar Christina
9732dc855e Arm: Add NEON and MVE RTL patterns for Complex Addition.
This adds implementation for the optabs for complex additions.  With this the
following C code:

  void f90 (float complex a[restrict N], float complex b[restrict N],
	    float complex c[restrict N])
  {
    for (int i=0; i < N; i++)
      c[i] = a[i] + (b[i] * I);
  }

generates

  f90:
	  add     r3, r2, #1600
  .L2:
	  vld1.32 {q8}, [r0]!
	  vld1.32 {q9}, [r1]!
	  vcadd.f32       q8, q8, q9, #90
	  vst1.32 {q8}, [r2]!
	  cmp     r3, r2
	  bne     .L2
	  bx      lr

instead of

  f90:
	  add     r3, r2, #1600
  .L2:
	  vld2.32 {d24-d27}, [r0]!
	  vld2.32 {d20-d23}, [r1]!
	  vsub.f32	q8, q12, q11
	  vadd.f32	q9, q13, q10
	  vst2.32 {d16-d19}, [r2]!
	  cmp     r3, r2
	  bne     .L2
	  bx      lr

gcc/ChangeLog:

	* config/arm/arm_mve.h (__arm_vcaddq_rot90_u8, __arm_vcaddq_rot270_u8,
	__arm_vcaddq_rot90_s8, __arm_vcaddq_rot270_s8,
	__arm_vcaddq_rot90_u16, __arm_vcaddq_rot270_u16,
	__arm_vcaddq_rot90_s16, __arm_vcaddq_rot270_s16,
	__arm_vcaddq_rot90_u32, __arm_vcaddq_rot270_u32,
	__arm_vcaddq_rot90_s32, __arm_vcaddq_rot270_s32,
	__arm_vcaddq_rot90_f16, __arm_vcaddq_rot270_f16,
	__arm_vcaddq_rot90_f32, __arm_vcaddq_rot270_f32):  Update builtin calls.
	* config/arm/arm_mve_builtins.def (vcaddq_rot90_u, vcaddq_rot270_u,
	vcaddq_rot90_s, vcaddq_rot270_s, vcaddq_rot90_f, vcaddq_rot270_f):
	Removed.
	(vcaddq_rot90, vcaddq_rot270): New.
	* config/arm/constraints.md (Dz): Include MVE.
	* config/arm/iterators.md (mve_rot): New.
	(supf): Remove VCADDQ_ROT270_S, VCADDQ_ROT270_U, VCADDQ_ROT90_S,
	VCADDQ_ROT90_U.
	(VCADDQ_ROT270, VCADDQ_ROT90): Removed.
	* config/arm/mve.md (mve_vcaddq_rot270_<supf><mode,
	mve_vcaddq_rot90_<supf><mode>, mve_vcaddq_rot270_f<mode>,
	mve_vcaddq_rot90_f<mode>): Removed.
	(mve_vcaddq<mve_rot><mode>, mve_vcaddq<mve_rot><mode>): New.
	* config/arm/unspecs.md (VCADDQ_ROT270_S, VCADDQ_ROT90_S,
	VCADDQ_ROT270_U, VCADDQ_ROT90_U, VCADDQ_ROT270_F,
	VCADDQ_ROT90_F): Removed.
	* config/arm/vec-common.md (cadd<rot><mode>3): New.
2020-12-16 20:44:57 +00:00
Tamar Christina
84747acf8d AArch64: Add NEON, SVE and SVE2 RTL patterns for Complex Addition.
This adds implementation for the optabs for add complex operations.  With this
the following C code:

  void f90 (float complex a[restrict N], float complex b[restrict N],
	    float complex c[restrict N])
  {
    for (int i=0; i < N; i++)
      c[i] = a[i] + (b[i] * I);
  }

generates

  f90:
	  mov     x3, 0
	  .p2align 3,,7
  .L2:
	  ldr     q0, [x0, x3]
	  ldr     q1, [x1, x3]
	  fcadd   v0.4s, v0.4s, v1.4s, #90
	  str     q0, [x2, x3]
	  add     x3, x3, 16
	  cmp     x3, 1600
	  bne     .L2
	  ret

instead of

  f90:
	  add     x3, x1, 1600
	  .p2align 3,,7
  .L2:
	  ld2     {v4.4s - v5.4s}, [x0], 32
	  ld2     {v2.4s - v3.4s}, [x1], 32
	  fsub    v0.4s, v4.4s, v3.4s
	  fadd    v1.4s, v5.4s, v2.4s
	  st2     {v0.4s - v1.4s}, [x2], 32
	  cmp     x3, x1
	  bne     .L2
	  ret

gcc/ChangeLog:

	* config/aarch64/aarch64-simd.md (cadd<rot><mode>3): New.
	* config/aarch64/iterators.md (SVE2_INT_CADD_OP): New.
	* config/aarch64/aarch64-sve.md (cadd<rot><mode>3): New.
	* config/aarch64/aarch64-sve2.md (cadd<rot><mode>3): New.
2020-12-16 20:43:54 +00:00
David Edelsohn
cdb1c27656 testsuite: Adjust expected instruction count for PPC fold testcases.
commit r11-5958 changed the code generation for the vector logical fold
tests.  This patch updates the expected instruction counts for different
instructions.

gcc/testsuite/ChangeLog:

2020-12-16  David Edelsohn  <dje.gcc@gmail.com>

	PR target/98280
	* gcc.target/powerpc/fold-vec-logical-ors-char.c: Adjust count.
	* gcc.target/powerpc/fold-vec-logical-ors-int.c: Adjust count.
	* gcc.target/powerpc/fold-vec-logical-ors-longlong.c: Adjust count.
	* gcc.target/powerpc/fold-vec-logical-ors-short.c: Adjust count.
	* gcc.target/powerpc/fold-vec-logical-other-char.c: Adjust count.
	* gcc.target/powerpc/fold-vec-logical-other-int.c: Adjust count.
	* gcc.target/powerpc/fold-vec-logical-other-longlong.c: Adjust count.
	* gcc.target/powerpc/fold-vec-logical-other-short.c: Adjust count.
2020-12-16 15:22:04 -05:00
Nathan Sidwell
b7b6879f0b c++: Another solaris header use [PR 98315]
Rather than early-include sys/socket.h, let's allow the includer to
tell cody no networking.

	libcody/
	* cody.hh: Allow user to set CODY_NETWORKING.
	gcc/cp/
	* mapper-resolver.cc: Remove early include of
	sys/socket.h.  Specify no CODY_NETWORKING instead.
	* module.cc: Specify no CODY_NETWORKING.
2020-12-16 11:57:31 -08:00
Nathan Sidwell
8d8bb85b48 c++: Fix template parm ICE [PR 98297]
I think this is nonsense code, we seem to be naming an instantiation
of a template template parm.  But this fixes the ICE.  Perhaps we
should diagnose the issue earlier?

	gcc/cp/
	* parser.c (cp_parser_elaborated_type_specifier): Test
	BOUND_TEMPLATE_TEMPLATE_PARM before checking for instantiation.
	gcc/testsuite/
	* g++.dg/template/pr98297.C: New.
2020-12-16 11:57:31 -08:00
Nathan Sidwell
3f78c8cb7f c++tools: fix install-strip [PR 98328]
I'd missed an install-strip rule in c++tools.  Here it is, cribbed
from gcc/ subdir.

	c++tools/
	* Makefile.in (INSTALL): Replace with ...
	(INSTALL_PROGRAM): ... this.
	(INSTALL_STRIP_PROGRAM): New.
	(install-strip): New target.
	(install): Use INSTALL_PROGRAM.
	* configure.ac: Add INSTALL_PROGRAM.
	* configure: Regenerated.
2020-12-16 11:57:31 -08:00
Jonathan Wakely
4d4f82959a libstdc++: Simplify built-in detection in <utility>
Now that GCC supports __has_builtin there is no need to test whether
it's defined, we can just use it unconditionally.

libstdc++-v3/ChangeLog:

	* include/std/utility: Use __has_builtin without checking if
	it's defined.
2020-12-16 19:25:09 +00:00
Jonathan Wakely
767537a8b0 libstdc++: Warn if __STRICT_ANSI has been undefined
Recent changes to use __int128 as an integer-like type in <ranges> and
to optimize std::uniform_int_distribution mean that the library relies
on __int128 more heavily than in the past.

The library expects that if __int128 is supported then either
__GLIBCXX_TYPE_INT_N_0 is defined (and we treat is like the standard
integer types), or __STRICT_ANSI__ is defined (and we need to add
special handling for __int128 as a non-standard integer type).

If users compile with -std=c++NN -U__STRICT_ANSI__ then it puts the
library into a broken and inconsistent state, where the compiler doesn't
define the __GLIBCXX_TYPE_INT_N_0 macro, but the library thinks it
doesn't need special handling for __int128. What the user should do is
compile with -std=gnu++NN instead.

This adds a warning if it appears that __int128 is supported but neither
__GLIBCXX_TYPE_INT_N_0 nor __STRICT_ANSI__ is defined.

libstdc++-v3/ChangeLog:

	* include/bits/c++config: Warn if __STRICT_ANSI__ state is
	inconsistent with __GLIBCXX_TYPE_INT_N_0.
2020-12-16 19:25:09 +00:00
Pat Haugen
e128aaa6e5 Fix instruction length for MMA insns.
Prefixed instructions should not have their length explicitly set to '8'. The function get_attr_length() will adjust the length appropriately based on the value of the "prefixed" attribute.

2020-12-16  Pat Haugen  <pthaugen@linux.ibm.com>

gcc/
	* config/rs6000/mma.md (*movxo, mma_<vvi4i4i8>, mma_<avvi4i4i8>,
	mma_<vvi4i4i2>, mma_<avvi4i4i2>, mma_<vvi4i4>, mma_<avvi4i4>,
	mma_<pvi4i2>, mma_<apvi4i2>, mma_<vvi4i4i4>, mma_<avvi4i4i4>):
	Remove explicit setting of length attribute.
2020-12-16 12:50:35 -06:00
Nathan Sidwell
8379916b16 c++: Fix offsetof use [PR 98232]
offsetof is underspecified.  GCC happened to accept an unneeded
explicit scoping, clang does not.

	gcc/cp/
	* module.cc (dumper::push): Clangify offsetof use.
2020-12-16 09:44:38 -08:00
Nathan Sidwell
269e82d49e C++: Fix solaris header use (mk 2)
There is another path to get to a poisoned bcopy.  Fixed thusly.

	gcc/cp/
	* mapper-resolver.cc: #include sys/socket before system.h
	due to poisoned bcopy use.
2020-12-16 09:41:05 -08:00
Jakub Jelinek
652702b0c9 libcody: fix --enable-checking=... follow-up [PR98311]
> The -enable-checking configure code in libcody didn't play well with
> us.  This just uses libcpp's configurey for that piece.

This doesn't set is_release anywhere, which means when --enable-checking*
or --disable-checking isn't specified, it always treats it as
--enable-checking=yes, while the normal gcc behavior is treat only trunk
as --enable-checking=yes and treat release branches as
--enable-checking=release by default.

On the other side, nothing uses those ac_assert_checking and
ac_valgrind_checking variables, so it is a waste to compute those.

2020-12-16  Jakub Jelinek  <jakub@redhat.com>

	* configure.ac: Compute is_release.
	(NMS_ENABLE_CHECKING): Simplify but not computing ac_assert_checking
	and ac_valgrind_checking the code doesn't use.
	* configure: Regenerated.
2020-12-16 18:21:32 +01:00
Harald Anlauf
5098d35fb1 PR fortran/98284 - ICE in get_array_index
Reject DATA elements with the ALLOCATABLE attribute also when they are
components of a derived type.

gcc/fortran/ChangeLog:

	PR fortran/98284
	* resolve.c (check_data_variable): Reject DATA elements with the
	ALLOCATABLE attribute.

gcc/testsuite/ChangeLog:

	PR fortran/98284
	* gfortran.dg/pr98284.f90: New test.
2020-12-16 17:25:06 +01:00
Jakub Jelinek
134afa38f0 varasm: Fix up __patchable_function_entries handling
The SECTION_LINK_ORDER changes don't seem to work properly.

If I compile:
static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) int foo (int x)
{
  return x + 1;
}

static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) int bar (int x)
{
  return x + 2;
}

int
baz (int x)
{
  return foo (x) + 1;
}

int
qux (int x)
{
  return bar (x) + 2;
}
(distilled from aarch64 Linux kernel) with
-O2 -fpatchable-function-entry=2 on aarch64 compiler configured against
latest binutils, I get:
...
	.section	__patchable_function_entries,"awo",@progbits,baz
...
	.section	__patchable_function_entries
...
in the assembly, but when it is assembled, one gets:
  [ 4] __patchable_function_entries PROGBITS        0000000000000000 000060 000008 00 WAL  1   0  8
  [ 5] .rela__patchable_function_entries RELA            0000000000000000 000280 000018 18   I 12   4  8
  [ 6] __patchable_function_entries PROGBITS        0000000000000000 000068 000008 00      0   0  8
  [ 7] .rela__patchable_function_entries RELA            0000000000000000 000298 000018 18   I 12   6  8
i.e. one writable allocated section with SHF_LINK_ORDER and another
non-allocated non-writable without link order.  In the kernel case there is
always one entry in the WAL section and then dozens or more in the
non-allocated one.
The kernel then fails to link:
WARNING: modpost: vmlinux.o (__patchable_function_entries): unexpected non-allocatable section.
Did you forget to use "ax"/"aw" in a .S file?
Note that for example <linux/init.h> contains
section definitions for use in .S files.
ld: .init.data has both ordered [`__patchable_function_entries' in init/main.o] and unordered [`.init.data' in
+./drivers/firmware/efi/libstub/vsprintf.stub.o] sections
ld: final link failed: bad value
make: *** [Makefile:1175: vmlinux] Error 1

The following patch fixes it by always forcing full section flags for
SECTION_LINK_ORDER sections.

2020-12-16  Jakub Jelinek  <jakub@redhat.com>

	* varasm.c (default_elf_asm_named_section): Always force
	section flags even for sections with SECTION_LINK_ORDER flag.
2020-12-16 16:15:35 +01:00
Jonathan Wakely
4e42f6ebf4 libcody: Fix build for older GCC versions
Before CWG DR 1955 the controlling expression for an #elif must be
syntactically correct, meaning this won't compile with C++11 compilers
such as gcc 4.8:

The solution is to define __has_include(X) as 0 for compilers that don't
support it.

The second problem is that when <source_location> is found, it is used
without the std:: qualification.

libcody/ChangeLog:

	* internal.hh: Define fallback macros for __has_builtin and
	__has_include. Use __has_builtin for __builtin_FILE and
	__builtin_LINE. Define alias for std::source_location.
2020-12-16 14:33:26 +00:00
Jonathan Wakely
96d9670e88 libstdc++: Only use __builtin_sprintf if supported [PR 96083]
Clang doesn't support __builtin_sprintf, so use std::sprintf instead.

libstdc++-v3/ChangeLog:

	PR libstdc++/96083
	* include/ext/throw_allocator.h: Use __has_builtin to check for
	__builtin_sprintf support, and use std::sprtinf if necessary.
2020-12-16 14:33:26 +00:00
Nathan Sidwell
4be6c4e2a4 libcody: fix --enable-checking=... [PR 98311]
The -enable-checking configure code in libcody didn't play well with
us.  This just uses libcpp's configurey for that piece.

	libcody/
	* configure.ac: Use libcpp's enable-checking code.
	* configure: Rebuilt.
2020-12-16 06:20:20 -08:00
Nathan Sidwell
6d972f5183 libcody: More dashism
There were still some dash-killing uses of +=.  Fixed thusly.

	* config.m4: Replace V+="..." with V="$V..."
	* configure: Rebuilt.
2020-12-16 06:03:38 -08:00
Nathan Sidwell
c1ea7c68ef c++: Fix detailed-mem-stat breakage
module.cc has a static initializer that ends up in a circular
dependency when detailed mem stats are enabled.  This removes the need
for that initializer to be dynamic, and we punt to the lazy
initializing we already had inside the object in question anyway.  At
the cost of an additional indirection.

	gcc/cp/
	* module.cc (loc_spans): Make spans a pointer, not inline.
	Adjust all accesses.
2020-12-16 05:55:38 -08:00
H.J. Lu
151d1347c9 Require .init_array/.fini_array support for SHF_GNU_RETAIN
Since SHF_GNU_RETAIN support doesn't work for crtstuff.c which switches
the output section directly with asm statement:

---
static void __attribute__((used))
__do_global_dtors_aux (void)
{
  static _Bool completed;

  if (__builtin_expect (completed, 0))
    return;
  completed = 1;
}

static void __attribute__((__used__))
call___do_global_dtors_aux (void)
{
  asm ("\t.section\t.fini");
  __do_global_dtors_aux ();
  asm ("\t.section\t.text");
}
---

use SHF_GNU_RETAIN only if .init_array/.fini_array section is supported.

gcc/

	PR target/98146
	* defaults.h (SUPPORTS_SHF_GNU_RETAIN): New.
	* varasm.c (get_section): Replace HAVE_GAS_SHF_GNU_RETAIN with
	SUPPORTS_SHF_GNU_RETAIN.
	(resolve_unique_section): Likewise.
	(get_variable_section): Likewise.
	(switch_to_section): Likewise.

gcc/testsuite/

	PR target/98146
	* lib/target-supports.exp
	(check_effective_target_R_flag_in_section): Also check
	HAVE_INITFINI_ARRAY_SUPPORT != 0.
2020-12-16 05:42:08 -08:00
H.J. Lu
2a97602060 Warn used and not used symbols in section with the same name
When SECTION_RETAIN is used, issue a warning when a symbol without used
attribute and a symbol with used attribute are placed in the section with
the same name, like

int __attribute__((used,section(".data.foo"))) foo2 = 2;
int __attribute__((section(".data.foo"))) foo1 = 1;

since assembler will put them in different sections with the same section
name.

gcc/

	PR target/98146
	* varasm.c (switch_to_section): Warn when a symbol without used
	attribute and a symbol with used attribute are placed in the
	section with the same name.

gcc/testsuite/

	PR target/98146
	* c-c++-common/attr-used-5.c: Updated.
	* c-c++-common/attr-used-6.c: Likewise.
	* c-c++-common/attr-used-7.c: Likewise.
	* c-c++-common/attr-used-8.c: Likewise.
2020-12-16 05:40:57 -08:00
H.J. Lu
6175383249 Switch to a new section if the SECTION_RETAIN bit doesn't match
When definitions marked with used attribute and unmarked definitions are
placed in the section with the same name, switch to a new section if the
SECTION_RETAIN bit doesn't match.

gcc/

	PR target/98146
	* output.h (switch_to_section): Add a tree argument, default to
	nullptr.
	* varasm.c (get_section): If the SECTION_RETAIN bit doesn't match,
	return and switch to a new section later.
	(assemble_start_function): Pass decl to switch_to_section.
	(assemble_variable): Likewise.
	(switch_to_section): If the SECTION_RETAIN bit doesn't match,
	switch to a new section.

gcc/testsuite/

	PR target/98146
	* c-c++-common/attr-used-5.c: New test.
	* c-c++-common/attr-used-6.c: Likewise.
	* c-c++-common/attr-used-7.c: Likewise.
	* c-c++-common/attr-used-8.c: Likewise.
	* c-c++-common/attr-used-9.c: Likewise.
2020-12-16 05:40:57 -08:00
Jonathan Wakely
ab9bd93271 libstdc++: Fix errors from Library Fundamentals TS headers in C++11 [PR 98319]
Currently the <experimental/random>, <experimental/source_location> and
<experimental/utility> headers can be included in C++98 and C++11 modes,
but gives errors. With this change they can be included, but define
nothing.

libstdc++-v3/ChangeLog:

	PR libstdc++/98319
	* include/experimental/random: Only define contents for C++14
	and later.
	* include/experimental/source_location: Likewise.
	* include/experimental/utility: Likewise.
	* testsuite/experimental/feat-lib-fund.cc: Include all LFTS
	headers that are present. Allow test to run for all modes.
2020-12-16 13:37:17 +00:00
Jonathan Wakely
3cee0c6562 libstdc++: Add performance test for atomic_flag [PR 46447]
This adds a test to compare the performance of std::atomic_flag with
similar operations on std::atomic_uchar and std::atomic_int.

libstdc++-v3/ChangeLog:

	PR libstdc++/46447
	* testsuite/performance/29_atomics/atomic_flag.cc: New test.
2020-12-16 13:36:02 +00:00
Jonathan Wakely
a2c2eec183 libstdc++: Test errno macros directly, not via autoconf [PR 93151]
This fixes a bug caused by a mismatch between the macros defined by
<errno.h> when GCC is built and the macros defined by <errno.h> when
users include <system_error>. If the user code is compiled with
_XOPEN_SOURCE defined to 500 or 600, Darwin suppresses the
ENOTRECOVERABLE and EOWNERDEAD macros, which are not defined by SUSv3
(aka POSIX.1-2001).

Since POSIX requires the errno macros to be macros (and not variables or
enumerators) we can just test for them directly using the preprocessor.
That means that <system_error> will match what is actuallydefined when
it's included, not what was defined when GCC was built. With that change
there is no need for the GLIBCXX_CHECK_SYSTEM_ERROR configure checks and
they can be removed.

libstdc++-v3/ChangeLog:

	PR libstdc++/93151
	* acinclude.m4 (GLIBCXX_CHECK_SYSTEM_ERROR): Remove.
	* configure.ac: Regenerate.
	* config/os/generic/error_constants.h: Test POSIX errno macros
	directly, instead of corresponding _GLIBCXX_HAVE_EXXX macros.
	* testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc:
	Likewise.
	* testsuite/19_diagnostics/headers/system_error/93151.cc: New
	test.
2020-12-16 13:36:02 +00:00
Nathan Sidwell
4d8476b05d c++tools: Fix (an) install issue
This fixes installers that don't understand -p.

	c++tools/
	* Makefile.in (install): Do not use -p, use mkinstalldirs.
	(clean): Fix typo.
2020-12-16 05:19:06 -08:00
Nathan Sidwell
6ff747f023 c++: Fix (some) solaris breakage
Solaris' sys/socket uses the poisoned bcopy identifier, so we must
preemptively copy a bit of cody's inclusion logic to get it earlier.

	gcc/cp/
	* mapper-client.cc: Include sys/socket.h before system.h.
2020-12-16 05:18:39 -08:00
Arnaud Charlet
1c4aefb681 [Ada] Code cleanup: rename ALI.Scope
gcc/ada/

	* ali.ads, ali.adb, bindo-writers.adb, lib-writ.adb (Scope):
	Renamed to IS_Scope.
2020-12-16 08:01:05 -05:00
Joffrey Huguet
571d3fb1f4 [Ada] Add contracts to Ada.Strings.Fixed
gcc/ada/

	* libgnat/a-strfix.ads: Add postconditions and contract cases to
	subprograms.
2020-12-16 08:01:04 -05:00
Ed Schonberg
d1d0c4c800 [Ada] Handle iterator filters on loop specifications over containers
gcc/ada/

	* sem_ch5.adb (Analyze_Iterator_Specification): If iterator
	filter is present, preanalyze filter without expansion.
	(Analyze_Loop_Parameter_Specification): When
	loop_Parameter_Specification is rewritten as
	Iterator_Specification, transfer Iterator_Filter if present.
2020-12-16 08:01:04 -05:00
Doug Rupp
aa44eaca60 [Ada] armhf-linux: symbolic tracebacks
gcc/ada/

	* libgnat/s-objrea.ads (Object_Arch): Add ARM enum
	* libgnat/s-objrea.adb (Initialize): Add EM_ARM case.
	(Read_Address): Add ARM case to 32bit read.
	* Makefile.rtl: Add trasym units to the runtime for armhf-linux.
2020-12-16 08:01:04 -05:00
Dmitriy Anisimkov
29cd42e019 [Ada] Fix memory leak in GNAT.Expect.Non_Blocking_Spawn on Windows
gcc/ada/

	* libgnat/g-expect.adb (Non_Blocking_Spawn): Deallocate elements
	on Arg_List after calling Set_Up_Child_Communications.
2020-12-16 08:01:04 -05:00
Piotr Trojanek
64f4351d83 [Ada] Remove inconsistent colons in messages for Ada 83 violations
gcc/ada/

	* par-ch3.adb (P_Modular_Type_Definition): Remove colon from
	error message.
	* sem_ch11.adb (Check_Duplication): Likewise.
	* sem_ch3.adb (Derived_Type_Declaration): Likewise.
2020-12-16 08:01:03 -05:00
Piotr Trojanek
027ed68ca0 [Ada] Refine types of variables for parsing formal object declarations
gcc/ada/

	* par-ch12.adb (P_Formal_Object_Declarations): Refine types to
	Pos.
2020-12-16 08:01:03 -05:00
Piotr Trojanek
55337de847 [Ada] Fix typo in checks for implementation defined units
gcc/ada/

	* impunit.adb (Not_Impl_Defined_Unit): Fix typo in iteration
	over Non_Imp_File_Names_12 array.
2020-12-16 08:01:03 -05:00
Piotr Trojanek
2c623ed86a [Ada] Simplify membership tests with N_Delay_Statement subtype
gcc/ada/

	* exp_ch9.adb, sem_warn.adb: Simplify membership test.
2020-12-16 08:01:03 -05:00
Piotr Trojanek
612c48b13b [Ada] Simplify membership tests with N_Subprogram_Call subtype
gcc/ada/

	* exp_ch6.adb, exp_util.adb, sem_ch4.adb, sem_disp.adb,
	sem_elab.adb: Simplify membership test.
2020-12-16 08:01:02 -05:00
Eric Botcazou
1053ff8a3a [Ada] Fix glitch in comment of System.Powten_Table
gcc/ada/

	* libgnat/s-powtab.ads (Maxpow): Use explicit formula in comment.
2020-12-16 08:01:02 -05:00
Philippe Gil
61c91059b9 [Ada] Fix possible uninitialized ATCB component use
gcc/ada/

	* libgnarl/s-tporft.adb (Register_Foreign_Thread): Set
	Global_Task_Lock_Nesting before using allocator.
2020-12-16 08:01:02 -05:00
Eric Botcazou
e8070c83ab [Ada] Avoid artificial underflow in System.Val_Real
gcc/ada/

	* libgnat/s-valrea.adb (Maxexp32): New constant array.
	(Maxexp64): Likewise.
	(Maxexp80): Likewise.
	(Integer_to_Real): New local constants Maxexp and B.
	When the exponent is too negative, do the divison in two steps.
2020-12-16 08:01:01 -05:00
Piotr Trojanek
a0d40c5c32 [Ada] Fix integer-vs-float errors in example for Test_Case pragma
gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst
	(Test_Case): Change integer to float literals.
	* gnat_rm.texi: Regenerate.
2020-12-16 08:01:01 -05:00
Piotr Trojanek
bee916bcc7 [Ada] Reject junk syntax for Contract_Cases/Test_Case/Subprogram_Variant
gcc/ada/

	* sem_ch13.adb (Analyze_Aspect_Specifications): Add a codefix
	for extra parentheses around aspect Annotate expression; reject
	"(null record)" aggregate and extra parentheses around aspect
	Test_Case expression.
	* sem_prag.adb (Analyze_Pragma): Reject "null", "(null record)"
	and extra parentheses around pragma Contract_Cases; likewise for
	pragma Subprogram_Variant.
2020-12-16 08:01:01 -05:00
Dmitriy Anisimkov
be19b8662b [Ada] Fix gmem.out corruption by GNAT.Expect
gcc/ada/

	* adaint.h (__gnat_in_child_after_fork): New flag to express
	child process side after fork call.
	* adaint.c (__gnat_portable_spawn): Set flag
	__gnat_in_child_after_fork.
	* expect.c (__gnat_expect_fork): Set __gnat_in_child_after_fork
	to one on child side.
	* libgnat/memtrack.adb
	(In_Child_After_Fork): Flag to disable memory tracking.
	(Allow_Trace): New routine defining if memory should be tracked.
	(Alloc, Realloc, Free): Use Allow_Trace in "if" condition
	instead of First_Call.
2020-12-16 08:01:01 -05:00