diff options
Diffstat (limited to 'gcc/testsuite/c-c++-common/attr-unsequenced-2.c')
-rw-r--r-- | gcc/testsuite/c-c++-common/attr-unsequenced-2.c | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/gcc/testsuite/c-c++-common/attr-unsequenced-2.c b/gcc/testsuite/c-c++-common/attr-unsequenced-2.c new file mode 100644 index 0000000..faa26cc --- /dev/null +++ b/gcc/testsuite/c-c++-common/attr-unsequenced-2.c @@ -0,0 +1,81 @@ +/* Test unsequenced attribute: valid uses. */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-optimized" } */ +/* { dg-final { scan-tree-dump-times " f1 \\\(\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f2 \\\(\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f12 \\\(\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f13 \\\(\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f3 \\\(42\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f5 \\\(42\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f7 \\\(42\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f8 \\\(42\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f9 \\\(42\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f3 \\\(-42\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f5 \\\(-42\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f7 \\\(-42\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f8 \\\(-42\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump-times " f9 \\\(-42\\\);" 1 "optimized" } } */ +/* { dg-final { scan-tree-dump " f3 \\\(52\\\);" "optimized" } } */ +/* { dg-final { scan-tree-dump-times " fp1\.\[0-9]*_\[0-9]* \\\(14\\\);" 1 "optimized" } } */ + +__attribute__((unsequenced)) int f1 (void); +__attribute__((unsequenced)) int f2 (void), f3 (int); +int f4 (int, int *) __attribute__((unsequenced)); +int f5 (int) __attribute__((unsequenced)); +int f6 (int); +int (*fp1) (int) __attribute__((unsequenced)) = f6; +typedef int ft1 (int) __attribute__((unsequenced)); +typedef int ft2 (int); +extern __typeof (f6) __attribute__((unsequenced)) f7; +extern ft2 __attribute__((__unsequenced__)) f8; +int f1 (void); +int f9 (int); +int f9 (int) __attribute__((__unsequenced__)); +extern int x; + +__attribute__((unsequenced)) int +f10 (int x) +{ + return x + 42; +} + +__attribute__((__unsequenced__)) int +f11 (int *x, long long y[1], int z) +{ + x[0] = z; + x[1] = z + 1; + x[2] = z + 2; + *y = z + 3; + return z + 4 + f10 (-42); +} + +int f12 (void) __attribute__((unsequenced)); +int f12 (void) __attribute__((reproducible)); +int f13 (void) __attribute__((reproducible)); +int f13 (void) __attribute__((unsequenced)); + +int +g (void) +{ + int a = f1 () + f2 () + f3 (42) + f5 (42) + f7 (42) + f8 (42) + f9 (42) + f12 () + f13 (); + int b = f1 () + f2 () + f3 (42) + f5 (42) + f7 (42) + f8 (42) + f9 (42) + f12 () + f13 (); + int c = f3 (-42) + f5 (-42) + f7 (-42) + f8 (-42) + f9 (-42); + int d = f3 (-42) + f5 (-42) + f7 (-42) + f8 (-42) + f9 (-42); + int e = fp1 (14) + fp1 (14); + x++; + int f = f1 () + f2 () + f3 (42) + f5 (42) + f7 (42) + f8 (42) + f9 (42) + f12 () + f13 (); + int g = f1 () + f2 () + f3 (42) + f5 (42) + f7 (42) + f8 (42) + f9 (42) + f12 () + f13 (); + int h = f3 (-42) + f5 (-42) + f7 (-42) + f8 (-42) + f9 (-42); + int i = f3 (-42) + f5 (-42) + f7 (-42) + f8 (-42) + f9 (-42); + int j = fp1 (14) + fp1 (14); + return a + b + c + d + e + f + g + h + i + j; +} + +int +h (void) +{ + f3 (52); + f3 (52); + f3 (52); + return 0; +} |