/* { dg-do run { target fpic } } */ /* { dg-options "-O2 -fpic" } */ extern void abort (void); extern void exit (int); int bar (int x, char **y) { if (x != 56) abort (); if (**y != 'a') abort (); *y = "def"; return 1; } int baz (int x, char **y) { if (x != 56) abort (); if (**y != 'a') abort (); return 26; } int foo (int x, char *y) { int a; char *b = y; a = bar (x, &y); if (a) { y = b; a = baz (x, &y); } if (a) return a; baz (x, &y); return 0; } int main () { if (foo (56, "abc") != 26) abort (); exit (0); }