/* { dg-do run } */
/* { dg-options "-O -fno-pic" } */
-#if #cpu(a29k)
-/* No pic register. */
-#elif defined(__alpha__)
+extern void abort (void);
+
+#if defined(__alpha__)
/* PIC register is $29, but is used even without -fpic. */
#elif defined(__arc__)
# define PIC_REG "26"
# define PIC_REG "9"
#elif defined(AVR)
/* No pic register. */
-#elif defined(__clipper__)
-/* No pic register. */
-#elif defined(__convex__)
-/* No pic register. */
#elif defined(__cris__)
# define PIC_REG "0"
-#elif defined(__D30V__)
-/* No pic register. */
-#elif defined(__dsp1600__)
-/* No pic register. */
-#elif defined(__elxsi__)
-/* No pic register. */
#elif defined(__fr30__)
/* No pic register. */
#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__)
/* No pic register. */
#elif defined(_IBMR2)
/* No pic register. */
-#elif #cpu(i370)
-/* No pic register. */
#elif defined(__i386__)
# define PIC_REG "ebx"
-#elif defined(__i860__)
-/* No pic register. */
-#elif defined(__i960__)
-/* No pic register. */
#elif defined(__ia64__)
/* PIC register is r1, but is used even without -fpic. */
+#elif defined(__lm32__)
+/* No pic register. */
#elif defined(__M32R__)
/* No pic register. */
#elif defined(__m68k__)
# define PIC_REG "a5"
-#elif defined(__m88k__)
-# define PIC_REG "25"
#elif defined(__mc68hc1x__)
/* No pic register. */
#elif defined(__mcore__)
/* PIC register is $28, but is used even without -fpic. */
#elif defined(__MMIX__)
/* No pic register. */
-#elif defined(__mn10200__)
-/* No pic register. */
#elif defined(__mn10300__)
/* No pic register. */
-#elif #cpu(ns32k)
+#elif defined(__moxie__)
/* No pic register. */
-#elif defined(__parisc__)
+#elif defined(__hppa__)
/* PIC register is %r27 or %r19, but is used even without -fpic. */
#elif defined(__pdp11__)
/* No pic register. */
-#elif defined(__pj__)
-/* No pic register. */
-#elif defined(__powerpc__)
-# ifdef __darwin__
+#elif defined(__powerpc__) || defined(__PPC__) || defined(__POWERPC__) || defined (__ppc)
+# ifdef __MACH__
# define PIC_REG "31"
# else
# define PIC_REG "30"
# endif
-#elif defined(__ibm032__) /* aka romp */
-/* No pic register. */
#elif defined(__s390__)
# define PIC_REG "12"
#elif defined(__sparc__)
/* No pic register. */
#elif defined(__vax__)
/* No pic register. */
-#elif defined(__we32000__)
-/* No pic register. */
#elif defined(__xstormy16__)
/* No pic register. */
#elif defined(__XTENSA__)
/* No pic register. */
+#elif defined(__sh__)
+# define PIC_REG "r12"
+#elif defined(__x86_64__)
+/* No pic register. */
+#elif defined(__m32c__)
+/* No pic register. */
+#elif defined(__SPU__)
+# define PIC_REG "126"
+#elif defined (__frv__)
+# ifdef __FRV_FDPIC__
+# define PIC_REG "gr15"
+# else
+# define PIC_REG "gr17"
+#endif
#else
# error "Modify the test for your target."
#endif
/* Additionally test that the prologue/epilogue properly does *not*
save and restore global registers. Not possible when the PIC
- register is in a register window, of course. */
-#ifndef __sparc__
+ register is in a register window, of course. On Darwin, you can't
+ call library routines from non-PIC code. */
+#if !defined (__sparc__) && !defined(__MACH__)
if (reg)
abort ();
#endif