1  /* When compiled with -pedantic, this program will cause an ICE when the
       2     constant propagator tries to set the value of *str to UNDEFINED.
       3     
       4     This happens because *str is erroneously considered as a store alias.
       5     The aliasing code is then making *str an alias leader for its alias set
       6     and when the PHI node at the end of the while() is visited the first
       7     time, CCP will try to assign it a value of UNDEFINED, but the default
       8     value for *str is a constant.  */
       9  typedef	__SIZE_TYPE__ size_t;
      10  size_t strlength (const char * const);
      11  char foo();
      12  
      13  static const char * const str = "mingo";
      14  
      15  bar()
      16  {
      17    size_t c;
      18    char *x;
      19  
      20    c = strlength (str);
      21    while (c < 10)
      22      {
      23        if (c > 5)
      24  	*x = foo ();
      25        if (*x < 'a')
      26  	break;
      27      }
      28  
      29    return *x == '3';
      30  }