1 // { dg-do run  }
2 // { dg-options "-O" }
3 // GROUPS passed code-generation
4 // Options: -O
5 //
6 // Check that when an int value is assigned to a short int, the proper
7 // half of the int (i.e. the low order half) ends up in the short.
8 //
9 // This fails with 1.32.0 with -O and f1() is inline.
10 //
11 // Workaround - declare "f1_arg" as type "short int".
12 
13 #include <stdio.h>
14 #include <stdlib.h>
15 
16 short int v2;
17 
18 long v1 = 0x11117777;
19 
f1(long f1_arg)20 inline void f1 (long f1_arg)
21 {
22 	v2 = f1_arg;
23 }
24 
main()25 int main ()
26 {
27 	f1 (v1);
28 
29 	if (v2 != 0x00007777)
30 	  abort ();
31 	else
32 	  printf ("PASS\n");
33 }
34