1  /* This testcase caused ICE in do_SUBST on IA-32, because 0xf6 constant
       2     was not sign-extended for QImode.  */
       3  /* { dg-do run } */
       4  /* { dg-options "-O2" } */
       5  /* { dg-options "-O2 -mtune=i686" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
       6  
       7  #include <limits.h>
       8  
       9  void abort (void);
      10  void exit (int);
      11  
      12  void foo (void)
      13  {
      14    int i;
      15    char *p;
      16  
      17    p = (char *) &i;
      18    *p = -10;
      19    if (* (unsigned char *) p != 0x100 - 10)
      20      abort ();
      21  }
      22  
      23  int main (void)
      24  {
      25    if (UCHAR_MAX == 255)
      26      foo ();
      27    exit (0);
      28  }