x86-64: Define ASM_OUTPUT_ALIGNED_DECL_LOCAL

Define ASM_OUTPUT_ALIGNED_DECL_LOCAL for large local common symbol.

gcc/

	PR target/95620
	* config/i386/x86-64.h (ASM_OUTPUT_ALIGNED_DECL_LOCAL): New.

libgomp/

	PR target/95620
	* testsuite/libgomp.c/pr95620.c: New test.
This commit is contained in:
H.J. Lu 2020-06-26 13:59:31 -07:00
parent 0b7e26d8f9
commit 7aa22a8f1a
2 changed files with 29 additions and 0 deletions

View File

@ -59,6 +59,17 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define ASM_OUTPUT_ALIGNED_DECL_COMMON(FILE, DECL, NAME, SIZE, ALIGN) \
x86_elf_aligned_decl_common (FILE, DECL, NAME, SIZE, ALIGN);
#undef ASM_OUTPUT_ALIGNED_DECL_LOCAL
#define ASM_OUTPUT_ALIGNED_DECL_LOCAL(FILE, DECL, NAME, SIZE, ALIGN) \
do \
{ \
fprintf ((FILE), "%s", LOCAL_ASM_OP); \
assemble_name ((FILE), (NAME)); \
fprintf ((FILE), "\n"); \
ASM_OUTPUT_ALIGNED_DECL_COMMON (FILE, DECL, NAME, SIZE, ALIGN); \
} \
while (0)
/* This is used to align code labels according to Intel recommendations. */
#define SUBALIGN_LOG 3

View File

@ -0,0 +1,18 @@
// { dg-do link { target { { i?86-*-* x86_64-*-* } && lp64 } } }
/* { dg-require-effective-target lto } */
/* { dg-additional-options "-flto -mcmodel=medium" } */
double a[353783808];
int b, c, d;
int
main()
{
for (; b;)
#pragma omp parallel
a[c] = 1;
for (;; b++)
if (a[c])
d++;
return 0;
}