1 /* { dg-do compile } */
2 /* { dg-options "-O0 -gdwarf -dA" } */
3 
4 #define True  1
5 #define False 0
6 
F1(_Bool B1,_Bool B2)7 _Bool F1 (_Bool B1, _Bool B2)
8 {
9   _Bool R;
10 
11   if (B1
12       && B2)
13     R = True;
14   else
15     R = False;
16   return R;
17 }
18 
F2(_Bool B1,_Bool B2)19 _Bool F2 (_Bool B1, _Bool B2)
20 {
21   _Bool R;
22 
23   R = B1
24       && B2;
25   return R;
26 }
27 
F3(_Bool B1,_Bool B2)28 _Bool F3 (_Bool B1, _Bool B2)
29 {
30   _Bool R = False;
31 
32   if (B1
33       && B2)
34     R = True;
35   return R;
36 }
37 
F4(_Bool B1,_Bool B2)38 _Bool F4 (_Bool B1, _Bool B2)
39 {
40   _Bool R = False;
41 
42   if (B1
43       || B2)
44     ;
45   else
46     R = True;
47   return R;
48 }
49 
F5(_Bool B1,_Bool B2)50 _Bool F5 (_Bool B1, _Bool B2)
51 {
52   _Bool R = False;
53 
54   if (!(B1
55         && B2))
56     R = True;
57   return R;
58 }
59 
F8(_Bool B1,_Bool B2,_Bool B3,_Bool B4,_Bool B5,_Bool B6,_Bool B7,_Bool B8)60 _Bool F8 (_Bool B1, _Bool B2, _Bool B3, _Bool B4, _Bool B5, _Bool B6,
61           _Bool B7, _Bool B8)
62 {
63   _Bool R;
64 
65   if ((B1
66        || B2)
67        && B3
68        && !(B4
69             || B5)
70        && (B6
71            || (B7
72                && B8)))
73     R = True;
74   else
75     R = False;
76   return R;
77 }
78 
79 /* { dg-final { scan-assembler "short-circuit.c:11" } } */
80 /* { dg-final { scan-assembler "short-circuit.c:12" } } */
81 /* { dg-final { scan-assembler "short-circuit.c:13" } } */
82 /* { dg-final { scan-assembler "short-circuit.c:15" } } */
83 
84 /* { dg-final { scan-assembler "short-circuit.c:23" } } */
85 /* { dg-final { scan-assembler "short-circuit.c:24" } } */
86 
87 /* { dg-final { scan-assembler "short-circuit.c:32" } } */
88 /* { dg-final { scan-assembler "short-circuit.c:33" } } */
89 /* { dg-final { scan-assembler "short-circuit.c:34" } } */
90 
91 /* { dg-final { scan-assembler "short-circuit.c:42" } } */
92 /* { dg-final { scan-assembler "short-circuit.c:43" } } */
93 /* { dg-final { scan-assembler "short-circuit.c:46" } } */
94 
95 /* { dg-final { scan-assembler "short-circuit.c:54" } } */
96 /* { dg-final { scan-assembler "short-circuit.c:55" } } */
97 /* { dg-final { scan-assembler "short-circuit.c:56" } } */
98 
99 /* { dg-final { scan-assembler "short-circuit.c:65" } } */
100 /* { dg-final { scan-assembler "short-circuit.c:66" } } */
101 /* { dg-final { scan-assembler "short-circuit.c:67" } } */
102 /* { dg-final { scan-assembler "short-circuit.c:68" } } */
103 /* { dg-final { scan-assembler "short-circuit.c:69" } } */
104 /* { dg-final { scan-assembler "short-circuit.c:70" } } */
105 /* { dg-final { scan-assembler "short-circuit.c:71" } } */
106 /* { dg-final { scan-assembler "short-circuit.c:72" } } */
107 /* { dg-final { scan-assembler "short-circuit.c:73" } } */
108 /* { dg-final { scan-assembler "short-circuit.c:75" } } */
109