blob: dbe37027f89f7d648cdc0626d0e20f41d55a663b [file] [log] [blame]
/* { dg-do compile {target *-*-darwin* } } */
/* { dg-options "-std=c99 -w -fcommon" } */
/* This has been designed to give the same section usage for
-m32 and -m64 - so don't put any ints or longs in it ... */
/* A zero-sized object. */
typedef struct _empty {} e_s;
/* These should go in .comm */
char ub;
e_s ea;
/* { dg-final { scan-assembler ".comm\[\t \]_ub,1" } } */
/* { dg-final { scan-assembler ".comm\[\t \]_ea,1" } } */
/* These should go into __DATA,__common */
char a = 0;
short b = 0;
long long d = 0;
float e = 0;
double f = 0;
long double g = 0.L;
long long al_256 __attribute__((aligned (256))) = 0;
/* { dg-final { scan-assembler {.zerofill __DATA,__common,_a,1,0} } } */
/* { dg-final { scan-assembler {.zerofill __DATA,__common,_b,2,1} } } */
/* { dg-final { scan-assembler {.zerofill __DATA,__common,_d,8,3} } } */
/* { dg-final { scan-assembler {.zerofill __DATA,__common,_e,4,2} } } */
/* { dg-final { scan-assembler {.zerofill __DATA,__common,_f,8,3} } } */
/* long double can be 64 or 128 bits depending on the Darwin subtarget. */
/* { dg-final { scan-assembler {.zerofill __DATA,__common,_g,(16,4|8,3)} } } */
/* { dg-final { scan-assembler {.zerofill __DATA,__common,_al_256,8,8} } } */
/* These should go into __DATA,__bss */
static e_s sea;
static char sa ;
static short sb ;
static long long sd;
static float se ;
static double sf ;
static long double sg;
static long long sal_256 __attribute__((aligned (2048)));
/* { dg-final { scan-assembler {.zerofill __DATA,__bss,_sea,1,0} } } */
/* { dg-final { scan-assembler {.zerofill __DATA,__bss,_sa,1,0} } } */
/* { dg-final { scan-assembler {.zerofill __DATA,__bss,_sb,2,1} } } */
/* { dg-final { scan-assembler {.zerofill __DATA,__bss,_sd,8,3} } } */
/* { dg-final { scan-assembler {.zerofill __DATA,__bss,_se,4,2} } } */
/* { dg-final { scan-assembler {.zerofill __DATA,__bss,_sf,8,3} } } */
/* long double can be 64 or 128 bits depending on the Darwin subtarget. */
/* { dg-final { scan-assembler {.zerofill __DATA,__bss,_sg,(16,4|8,3)} } } */
/* { dg-final { scan-assembler {.zerofill __DATA,__bss,_sal_256,8,11} } } */
long long foo (int x)
{
e_s *s;
a += x + sa;
b += a + sb;
d += b + sd;
e += d + se;
f += e + sf;
g += f + sg;
s = &ea;
s = &sea;
b += al_256;
b += sal_256;
return (long long) sd + b;
}