1/* { dg-require-effective-target int32plus } */
2int __attribute__ ((noinline)) foo (short x, unsigned short y)
3{
4  return x * y;
5}
6
7int __attribute__ ((noinline)) bar (unsigned short x, short y)
8{
9  return x * y;
10}
11
12int 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
35