1  /* { dg-require-effective-target int32plus } */
       2  int __attribute__ ((noinline)) foo (short x, unsigned short y)
       3  {
       4    return x * y;
       5  }
       6  
       7  int __attribute__ ((noinline)) bar (unsigned short x, short y)
       8  {
       9    return x * y;
      10  }
      11  
      12  int main ()
      13  {
      14    if (foo (-2, 0xffff) != -131070)
      15      abort ();
      16    if (foo (2, 0xffff) != 131070)
      17      abort ();
      18    if (foo (-32768, 0x8000) != -1073741824)
      19      abort ();
      20    if (foo (32767, 0x8000) != 1073709056)
      21      abort ();
      22  
      23    if (bar (0xffff, -2) != -131070)
      24      abort ();
      25    if (bar (0xffff, 2) != 131070)
      26      abort ();
      27    if (bar (0x8000, -32768) != -1073741824)
      28      abort ();
      29    if (bar (0x8000, 32767) != 1073709056)
      30      abort ();
      31  
      32    exit (0);
      33  }
      34