]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/testsuite/gcc.dg/20020312-2.c
replace ISL with isl
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / 20020312-2.c
CommitLineData
5b43fed1
RH
1/* PR 5878.
2
3 We ICEd in verify_local_live_at_start because we incorrectly forced
4 the PIC register live between BAR and BAZ. We did this because the
5 definition of PIC_OFFSET_TABLE_REGNUM was incorrectly not INVALID_REGNUM
6 when !flag_pic for most targets. */
7
8/* { dg-do run } */
9/* { dg-options "-O -fno-pic" } */
55466f20 10/* { dg-require-effective-target nonlocal_goto } */
5b43fed1 11
ee712eab
JM
12extern void abort (void);
13
cdc497dd 14#if defined(__alpha__)
5b43fed1
RH
15/* PIC register is $29, but is used even without -fpic. */
16#elif defined(__arc__)
17# define PIC_REG "26"
18#elif defined(__arm__)
19# define PIC_REG "9"
20#elif defined(AVR)
21/* No pic register. */
5b43fed1
RH
22#elif defined(__cris__)
23# define PIC_REG "0"
feeeff5c
JR
24#elif defined(__epiphany__)
25#define PIC_REG "r28"
5b43fed1
RH
26#elif defined(__fr30__)
27/* No pic register. */
28#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__)
29/* No pic register. */
97c6c02c
DE
30#elif defined(_IBMR2)
31/* No pic register. */
5b43fed1
RH
32#elif defined(__i386__)
33# define PIC_REG "ebx"
5b43fed1
RH
34#elif defined(__ia64__)
35/* PIC register is r1, but is used even without -fpic. */
aa4945c1
JB
36#elif defined(__lm32__)
37/* No pic register. */
5b43fed1
RH
38#elif defined(__M32R__)
39/* No pic register. */
40#elif defined(__m68k__)
41# define PIC_REG "a5"
5b43fed1
RH
42#elif defined(__mc68hc1x__)
43/* No pic register. */
44#elif defined(__mcore__)
45/* No pic register. */
debd11d9
EI
46#elif defined(__MICROBLAZE__)
47# define PIC_REG "r20"
5b43fed1
RH
48#elif defined(__mips__)
49/* PIC register is $28, but is used even without -fpic. */
a541f1aa
HPN
50#elif defined(__MMIX__)
51/* No pic register. */
5b43fed1
RH
52#elif defined(__mn10300__)
53/* No pic register. */
35b954c1
AG
54#elif defined(__moxie__)
55/* No pic register. */
199f847c
CJW
56#elif defined(__nds32__)
57/* No pic register. */
e430824f
CLT
58#elif defined(__nios2__)
59/* No pic register. */
1f73c622 60#elif defined(__hppa__)
5b43fed1
RH
61/* PIC register is %r27 or %r19, but is used even without -fpic. */
62#elif defined(__pdp11__)
63/* No pic register. */
e8a861bd 64#elif defined(__powerpc__) || defined(__PPC__) || defined(__POWERPC__) || defined (__ppc)
2ee2d707 65# ifdef __MACH__
5b43fed1
RH
66# define PIC_REG "31"
67# else
68# define PIC_REG "30"
69# endif
7036ee24
NC
70#elif defined(__RX__)
71/* No pic register. */
5b43fed1
RH
72#elif defined(__s390__)
73# define PIC_REG "12"
74#elif defined(__sparc__)
75# define PIC_REG "l7"
dd552284
WL
76#elif defined(__tile__)
77# define PIC_REG "r51"
294689c4
BS
78#elif defined(__TMS320C6X__)
79# define PIC_REG "B14"
5b43fed1
RH
80#elif defined(__v850)
81/* No pic register. */
82#elif defined(__vax__)
83/* No pic register. */
0969ec7d
EB
84#elif defined(__VISIUM__)
85/* No pic register. */
5b43fed1
RH
86#elif defined(__xstormy16__)
87/* No pic register. */
88#elif defined(__XTENSA__)
89/* No pic register. */
309d8365
R
90#elif defined(__sh__)
91# define PIC_REG "r12"
278bba8b 92#elif defined(__x86_64__)
a239aa95
DD
93/* No pic register. */
94#elif defined(__m32c__)
278bba8b 95/* No pic register. */
69a0f8c6
BE
96#elif defined(__SPU__)
97# define PIC_REG "126"
b91670c7 98#elif defined (__frv__)
c807acf9
NC
99# ifdef __FRV_FDPIC__
100# define PIC_REG "gr15"
101# else
102# define PIC_REG "gr17"
103#endif
402d3de3
IB
104#elif defined (__aarch64__)
105/* No pic register -- yet. */
ac63f305
NC
106#elif defined(__RL78__)
107/* No pic register. */
108#elif defined(__MSP430__)
fb61af8b
BS
109/* No pic register. */
110#elif defined (__nvptx__)
ac63f305 111/* No pic register. */
5b43fed1
RH
112#else
113# error "Modify the test for your target."
114#endif
115
a4fa73f3 116#if defined PIC_REG && !defined __PIC__ && !defined __pic__
5b43fed1
RH
117register void *reg __asm__(PIC_REG);
118#else
119/* We really need a global register variable set to the PIC register
120 to expose the bug. Oh well, let the test case not fail. */
121static void *reg;
122#endif
123
124void * __attribute__((noinline))
125dummy (void *x)
126{
127 return x;
128}
129
130void
131f (void)
132{
133 goto *dummy (&&bar);
134 for (;;)
135 {
136 foo:
137 reg = (void *) 1;
138 if (!reg)
139 goto baz;
140 reg = &&foo;
141 }
142
143 bar:
144 baz:
145 reg = 0;
146}
147
148int
149main()
150{
151 void *old_reg = reg;
152 reg = (void *) 1;
9a1d8b2d 153
5b43fed1 154 f ();
9a1d8b2d
RH
155
156 /* Additionally test that the prologue/epilogue properly does *not*
157 save and restore global registers. Not possible when the PIC
2ee2d707
GK
158 register is in a register window, of course. On Darwin, you can't
159 call library routines from non-PIC code. */
e69d504e 160#if !defined (__sparc__) && !defined(__MACH__)
5b43fed1
RH
161 if (reg)
162 abort ();
9a1d8b2d
RH
163#endif
164
5b43fed1
RH
165 reg = old_reg;
166 return 0;
167}