annotate gcc/testsuite/gcc.dg/guality/pr68860-2.c @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* PR debug/68860 */
kono
parents:
diff changeset
2 /* { dg-do run } */
kono
parents:
diff changeset
3 /* { dg-options "-g" } */
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 #include "../nop.h"
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 int __attribute__((noinline))
kono
parents:
diff changeset
8 foo (int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8)
kono
parents:
diff changeset
9 {
kono
parents:
diff changeset
10 char *x = __builtin_alloca (arg7);
kono
parents:
diff changeset
11 int __attribute__ ((aligned(32))) y;
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 y = 2;
kono
parents:
diff changeset
14 asm (NOP : "=m" (y) : "m" (y));
kono
parents:
diff changeset
15 x[0] = 25 + arg8;
kono
parents:
diff changeset
16 asm volatile (NOP : "=m" (x[0]) : "m" (x[0]));
kono
parents:
diff changeset
17 return y;
kono
parents:
diff changeset
18 }
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 /* On s390(x) r2 and r3 are (depending on the optimization level) used
kono
parents:
diff changeset
21 when adjusting the addresses in order to meet the alignment
kono
parents:
diff changeset
22 requirements above. They usually hold the function arguments arg1
kono
parents:
diff changeset
23 and arg2. So it is expected that these values are unavailable in
kono
parents:
diff changeset
24 some of these tests. */
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 /* { dg-final { gdb-test 14 "arg1" "1" { target { ! "s390*-*-*" } } } } */
kono
parents:
diff changeset
27 /* { dg-final { gdb-test 14 "arg2" "2" { target { ! "s390*-*-*" } } } } */
kono
parents:
diff changeset
28 /* { dg-final { gdb-test 14 "arg3" "3" } } */
kono
parents:
diff changeset
29 /* { dg-final { gdb-test 14 "arg4" "4" } } */
kono
parents:
diff changeset
30 /* { dg-final { gdb-test 14 "arg5" "5" } } */
kono
parents:
diff changeset
31 /* { dg-final { gdb-test 14 "arg6" "6" } } */
kono
parents:
diff changeset
32 /* { dg-final { gdb-test 14 "arg7" "30" } } */
kono
parents:
diff changeset
33 /* { dg-final { gdb-test 14 "arg8" "7" } } */
kono
parents:
diff changeset
34 /* { dg-final { gdb-test 14 "y" "2" } } */
kono
parents:
diff changeset
35 /* { dg-final { gdb-test 16 "arg1" "1" { target { ! "s390*-*-*" } } } } */
kono
parents:
diff changeset
36 /* { dg-final { gdb-test 16 "arg2" "2" { target { ! "s390*-*-*" } } } } */
kono
parents:
diff changeset
37 /* { dg-final { gdb-test 16 "arg3" "3" } } */
kono
parents:
diff changeset
38 /* { dg-final { gdb-test 16 "arg4" "4" } } */
kono
parents:
diff changeset
39 /* { dg-final { gdb-test 16 "arg5" "5" } } */
kono
parents:
diff changeset
40 /* { dg-final { gdb-test 16 "arg6" "6" } } */
kono
parents:
diff changeset
41 /* { dg-final { gdb-test 16 "arg7" "30" } } */
kono
parents:
diff changeset
42 /* { dg-final { gdb-test 16 "arg8" "7" } } */
kono
parents:
diff changeset
43 /* { dg-final { gdb-test 16 "*x" "(char) 32" } } */
kono
parents:
diff changeset
44 /* { dg-final { gdb-test 16 "y" "2" } } */
kono
parents:
diff changeset
45
kono
parents:
diff changeset
46 int
kono
parents:
diff changeset
47 main ()
kono
parents:
diff changeset
48 {
kono
parents:
diff changeset
49 int l = 0;
kono
parents:
diff changeset
50 asm volatile ("" : "=r" (l) : "0" (l));
kono
parents:
diff changeset
51 foo (l + 1, l + 2, l + 3, l + 4, l + 5, l + 6, l + 30, 7);
kono
parents:
diff changeset
52 asm volatile ("" :: "r" (l));
kono
parents:
diff changeset
53 return 0;
kono
parents:
diff changeset
54 }