1*c85f09ccSJohn Levon void def(void);
2*c85f09ccSJohn Levon void r0(void);
3*c85f09ccSJohn Levon void r1(void);
4*c85f09ccSJohn Levon 
sw_long(long long a)5*c85f09ccSJohn Levon void sw_long(long long a)
6*c85f09ccSJohn Levon {
7*c85f09ccSJohn Levon 	switch (a) {
8*c85f09ccSJohn Levon 	case 0: return r0();
9*c85f09ccSJohn Levon 	case 1LL << 00: return r1();
10*c85f09ccSJohn Levon 	case 1LL << 32: return r1();
11*c85f09ccSJohn Levon 	}
12*c85f09ccSJohn Levon 
13*c85f09ccSJohn Levon 	return def();
14*c85f09ccSJohn Levon }
15*c85f09ccSJohn Levon 
16*c85f09ccSJohn Levon /*
17*c85f09ccSJohn Levon  * check-name: switch-long
18*c85f09ccSJohn Levon  * check-command: test-linearize -Wno-decl $file
19*c85f09ccSJohn Levon  *
20*c85f09ccSJohn Levon  * check-output-start
21*c85f09ccSJohn Levon sw_long:
22*c85f09ccSJohn Levon .L0:
23*c85f09ccSJohn Levon 	<entry-point>
24*c85f09ccSJohn Levon 	switch.64   %arg1, 0 -> .L2, 1 -> .L3, 4294967296 -> .L4, default -> .L1
25*c85f09ccSJohn Levon 
26*c85f09ccSJohn Levon .L2:
27*c85f09ccSJohn Levon 	call        r0
28*c85f09ccSJohn Levon 	br          .L5
29*c85f09ccSJohn Levon 
30*c85f09ccSJohn Levon .L3:
31*c85f09ccSJohn Levon 	call        r1
32*c85f09ccSJohn Levon 	br          .L5
33*c85f09ccSJohn Levon 
34*c85f09ccSJohn Levon .L4:
35*c85f09ccSJohn Levon 	call        r1
36*c85f09ccSJohn Levon 	br          .L5
37*c85f09ccSJohn Levon 
38*c85f09ccSJohn Levon .L1:
39*c85f09ccSJohn Levon 	call        def
40*c85f09ccSJohn Levon 	br          .L5
41*c85f09ccSJohn Levon 
42*c85f09ccSJohn Levon .L5:
43*c85f09ccSJohn Levon 	ret
44*c85f09ccSJohn Levon 
45*c85f09ccSJohn Levon 
46*c85f09ccSJohn Levon  * check-output-end
47*c85f09ccSJohn Levon  */
48