| /* { 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); | |
| } |