| /* When compiled with -pedantic, this program will cause an ICE when the |
| constant propagator tries to set the value of *str to UNDEFINED. |
| |
| This happens because *str is erroneously considered as a store alias. |
| The aliasing code is then making *str an alias leader for its alias set |
| and when the PHI node at the end of the while() is visited the first |
| time, CCP will try to assign it a value of UNDEFINED, but the default |
| value for *str is a constant. */ |
| typedef __SIZE_TYPE__ size_t; |
| size_t strlength (const char * const); |
| char foo(); |
| |
| static const char * const str = "mingo"; |
| |
| bar() |
| { |
| size_t c; |
| char *x; |
| |
| c = strlength (str); |
| while (c < 10) |
| { |
| if (c > 5) |
| *x = foo (); |
| if (*x < 'a') |
| break; |
| } |
| |
| return *x == '3'; |
| } |