]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/pr16194.c
Update copyright years.
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / pr16194.c
1 /* { dg-do compile } */
2 /* { dg-options "-O" } */
3 /* { dg-bogus "internal compiler error" "ICE" { target *-*-* } 0 } */
4
5 #undef SKIP
6 #define ASMDECL __asm (REG);
7 #define CLOBBER_LIST : REG
8 #define INP_CLOBBER_LIST : CLOBBER_LIST
9 #if defined (__alpha__)
10 # define REG "$1"
11 #elif defined (__CRIS__) || defined (__sh__)
12 # define REG "r10"
13 #elif defined (__hppa__)
14 # define REG "%r10"
15 #elif defined (__i386__)
16 # define REG "%eax"
17 #elif defined (__MMIX__)
18 # define REG "$8"
19 #elif defined (__powerpc__) || defined (__PPC__) || defined (__ppc__) \
20 || defined (__POWERPC__) || defined (PPC) || defined (_IBMR2)
21 # define REG "6"
22 #elif defined (__x86_64__)
23 # define REG "rax"
24 #elif defined (__m68k__)
25 # define REG "%d0"
26 #else
27 /* Make this test harmless for any target not recognized above. */
28 # define SKIP 1
29 #endif
30
31 #ifndef SKIP
32
33 struct A
34 {
35 int a;
36 };
37
38 struct B
39 {
40 struct A b[3];
41 };
42
43 struct C
44 {
45 struct B c;
46 };
47
48 void bug (void)
49 {
50 register char* dst ASMDECL;
51 __asm__ ("":"=g"(*dst): : REG);
52 }
53
54 /* The tree optimizers currently prevent us from finding an overlap -
55 we end up using a copy of dst rather than dst.
56 But at least make sure we don't get an ICE. */
57 void bug2 (void)
58 {
59 register char* dst ASMDECL;
60 __asm__ ("": :"g"(*dst) CLOBBER_LIST);
61 }
62
63 void
64 foo (void)
65 {
66 register struct C *dst ASMDECL;
67 __asm__ ("" : "=g"(dst->c.b[1].a) INP_CLOBBER_LIST);
68 }
69
70 #else
71
72 int main ()
73 {
74 return 0;
75 }
76
77 #endif
78