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. */
9 /* { dg-options "-O -fno-pic" } */
11 extern void abort (void);
13 #if defined(__alpha__)
14 /* PIC register is $29, but is used even without -fpic. */
15 #elif defined(__arc__)
17 #elif defined(__arm__)
20 /* No pic register. */
21 #elif defined(__cris__)
23 #elif defined(__epiphany__)
25 #elif defined(__fr30__)
26 /* No pic register. */
27 #elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__)
28 /* No pic register. */
30 /* No pic register. */
31 #elif defined(__i386__)
32 # define PIC_REG "ebx"
33 #elif defined(__ia64__)
34 /* PIC register is r1, but is used even without -fpic. */
35 #elif defined(__lm32__)
36 /* No pic register. */
37 #elif defined(__M32R__)
38 /* No pic register. */
39 #elif defined(__m68k__)
41 #elif defined(__mc68hc1x__)
42 /* No pic register. */
43 #elif defined(__mcore__)
44 /* No pic register. */
45 #elif defined(__mips__)
46 /* PIC register is $28, but is used even without -fpic. */
47 #elif defined(__MMIX__)
48 /* No pic register. */
49 #elif defined(__mn10300__)
50 /* No pic register. */
51 #elif defined(__moxie__)
52 /* No pic register. */
53 #elif defined(__hppa__)
54 /* PIC register is %r27 or %r19, but is used even without -fpic. */
55 #elif defined(__pdp11__)
56 /* No pic register. */
57 #elif defined(__powerpc__) || defined(__PPC__) || defined(__POWERPC__) || defined (__ppc)
64 /* No pic register. */
65 #elif defined(__s390__)
67 #elif defined(__sparc__)
69 #elif defined(__tile__)
70 # define PIC_REG "r51"
71 #elif defined(__TMS320C6X__)
72 # define PIC_REG "B14"
74 /* No pic register. */
75 #elif defined(__vax__)
76 /* No pic register. */
77 #elif defined(__xstormy16__)
78 /* No pic register. */
79 #elif defined(__XTENSA__)
80 /* No pic register. */
82 # define PIC_REG "r12"
83 #elif defined(__x86_64__)
84 /* No pic register. */
85 #elif defined(__m32c__)
86 /* No pic register. */
87 #elif defined(__SPU__)
88 # define PIC_REG "126"
89 #elif defined (__frv__)
91 # define PIC_REG "gr15"
93 # define PIC_REG "gr17"
95 #elif defined (__aarch64__)
96 /* No pic register -- yet. */
98 # error "Modify the test for your target."
101 #if defined PIC_REG && !defined __PIC__ && !defined __pic__
102 register void *reg
__asm__(PIC_REG
);
104 /* We really need a global register variable set to the PIC register
105 to expose the bug. Oh well, let the test case not fail. */
109 void * __attribute__((noinline
))
141 /* Additionally test that the prologue/epilogue properly does *not*
142 save and restore global registers. Not possible when the PIC
143 register is in a register window, of course. On Darwin, you can't
144 call library routines from non-PIC code. */
145 #if !defined (__sparc__) && !defined(__MACH__)