@@ -20,7 +20,7 @@ void sw1(int a) {
2020}
2121
2222// CIR: cir.func{{.*}} @_Z3sw1i
23- // CIR: cir.switch (%[[COND:.*]] : !s32i) {
23+ // CIR: cir.switch(%[[COND:.*]] : !s32i) {
2424// CIR-NEXT: cir.case(equal, [#cir.int<0> : !s32i]) {
2525// CIR: cir.break
2626// CIR: cir.case(equal, [#cir.int<1> : !s32i]) {
@@ -101,7 +101,7 @@ void sw2(int a) {
101101// CIR: cir.scope {
102102// CIR-NEXT: %[[YOLO:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["yolo", init]
103103// CIR-NEXT: %[[FOMO:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["fomo", init]
104- // CIR: cir.switch (%[[COND:.*]] : !s32i) {
104+ // CIR: cir.switch(%[[COND:.*]] : !s32i) {
105105// CIR-NEXT: cir.case(equal, [#cir.int<3> : !s32i]) {
106106// CIR-NEXT: %[[ZERO:.*]] = cir.const #cir.int<0> : !s32i
107107// CIR-NEXT: cir.store{{.*}} %[[ZERO]], %[[FOMO]] : !s32i, !cir.ptr<!s32i>
@@ -154,7 +154,7 @@ void sw3(int a) {
154154// CIR: cir.func{{.*}} @_Z3sw3i
155155// CIR: cir.scope {
156156// CIR-NEXT: %[[COND:.*]] = cir.load{{.*}} %[[A:.*]] : !cir.ptr<!s32i>, !s32i
157- // CIR-NEXT: cir.switch (%[[COND]] : !s32i) {
157+ // CIR-NEXT: cir.switch(%[[COND]] : !s32i) {
158158// CIR-NEXT: cir.case(default, []) {
159159// CIR-NEXT: cir.break
160160// CIR-NEXT: }
@@ -196,7 +196,7 @@ int sw4(int a) {
196196}
197197
198198// CIR: cir.func{{.*}} @_Z3sw4i
199- // CIR: cir.switch (%[[COND:.*]] : !s32i) {
199+ // CIR: cir.switch(%[[COND:.*]] : !s32i) {
200200// CIR-NEXT: cir.case(equal, [#cir.int<42> : !s32i]) {
201201// CIR-NEXT: cir.scope {
202202// CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !s32i
@@ -264,7 +264,7 @@ void sw5(int a) {
264264}
265265
266266// CIR: cir.func{{.*}} @_Z3sw5i
267- // CIR: cir.switch (%[[A:.*]] : !s32i) {
267+ // CIR: cir.switch(%[[A:.*]] : !s32i) {
268268// CIR-NEXT: cir.case(equal, [#cir.int<1> : !s32i]) {
269269// CIR-NEXT: cir.yield
270270// CIR-NEXT: }
@@ -314,7 +314,7 @@ void sw6(int a) {
314314}
315315
316316// CIR: cir.func{{.*}} @_Z3sw6i
317- // CIR: cir.switch (%[[A:.*]] : !s32i) {
317+ // CIR: cir.switch(%[[A:.*]] : !s32i) {
318318// CIR-NEXT: cir.case(equal, [#cir.int<0> : !s32i]) {
319319// CIR-NEXT: cir.yield
320320// CIR-NEXT: }
@@ -406,7 +406,7 @@ void sw7(int a) {
406406
407407// CIR: cir.func{{.*}} @_Z3sw7i
408408// CIR: %[[X:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["x"]
409- // CIR: cir.switch (%[[A:.*]] : !s32i)
409+ // CIR: cir.switch(%[[A:.*]] : !s32i)
410410// CIR-NEXT: cir.case(equal, [#cir.int<0> : !s32i]) {
411411// CIR-NEXT: cir.yield
412412// CIR-NEXT: }
@@ -499,7 +499,7 @@ void sw8(int a) {
499499}
500500
501501// CIR: cir.func{{.*}} @_Z3sw8i
502- // CIR: cir.switch (%[[A:.*]] : !s32i)
502+ // CIR: cir.switch(%[[A:.*]] : !s32i)
503503// CIR-NEXT: cir.case(equal, [#cir.int<3> : !s32i]) {
504504// CIR-NEXT: cir.break
505505// CIR-NEXT: }
@@ -557,7 +557,7 @@ void sw9(int a) {
557557}
558558
559559// CIR: cir.func{{.*}} @_Z3sw9i
560- // CIR: cir.switch (%[[A:.*]] : !s32i)
560+ // CIR: cir.switch(%[[A:.*]] : !s32i)
561561// CIR-NEXT: cir.case(equal, [#cir.int<3> : !s32i]) {
562562// CIR-NEXT: cir.break
563563// CIR-NEXT: }
@@ -616,7 +616,7 @@ void sw10(int a) {
616616}
617617
618618// CIR: cir.func{{.*}} @_Z4sw10i
619- // CIR: cir.switch (%[[A:.*]] : !s32i)
619+ // CIR: cir.switch(%[[A:.*]] : !s32i)
620620// CIR-NEXT: cir.case(equal, [#cir.int<3> : !s32i]) {
621621// CIR-NEXT: cir.break
622622// CIR-NEXT: }
@@ -688,7 +688,7 @@ void sw11(int a) {
688688}
689689
690690// CIR: cir.func{{.*}} @_Z4sw11i
691- // CIR: cir.switch (%[[A:.*]] : !s32i)
691+ // CIR: cir.switch(%[[A:.*]] : !s32i)
692692// CIR-NEXT: cir.case(equal, [#cir.int<3> : !s32i]) {
693693// CIR-NEXT: cir.break
694694// CIR-NEXT: }
@@ -1063,7 +1063,7 @@ int nested_switch(int a) {
10631063 return 0 ;
10641064}
10651065
1066- // CIR: cir.switch (%[[COND:.*]] : !s32i) {
1066+ // CIR: cir.switch(%[[COND:.*]] : !s32i) {
10671067// CIR: cir.case(equal, [#cir.int<0> : !s32i]) {
10681068// CIR: cir.yield
10691069// CIR: }
@@ -1198,7 +1198,7 @@ int sw_return_multi_cases(int x) {
11981198}
11991199
12001200// CIR-LABEL: cir.func{{.*}} @_Z21sw_return_multi_casesi
1201- // CIR: cir.switch (%{{.*}} : !s32i) {
1201+ // CIR: cir.switch(%{{.*}} : !s32i) {
12021202// CIR-NEXT: cir.case(equal, [#cir.int<0> : !s32i]) {
12031203// CIR: %[[ZERO:.*]] = cir.const #cir.int<0> : !s32i
12041204// CIR: cir.store{{.*}} %[[ZERO]], %{{.*}} : !s32i, !cir.ptr<!s32i>
@@ -1270,3 +1270,25 @@ int sw_return_multi_cases(int x) {
12701270// OGCG: [[RETURN]]:
12711271// OGCG: %[[RETVAL_LOAD:.*]] = load i32, ptr %[[RETVAL]], align 4
12721272// OGCG: ret i32 %[[RETVAL_LOAD]]
1273+
1274+ enum M {
1275+ Six,
1276+ Seven
1277+ };
1278+
1279+ void testSwitchCoverAllCase (M m) {
1280+ switch (m) {
1281+ case Six:case Seven:
1282+ break ;
1283+ }
1284+ }
1285+ // CIR: cir.switch(%[[ARG:.*]] : !s32i) allEnumCasesCovered {
1286+
1287+ void testSwitchNotCoverAllCase (M m) {
1288+ switch (m) {
1289+ case Six:
1290+ default :
1291+ break ;
1292+ }
1293+ }
1294+ // CIR: cir.switch(%[[ARG:.*]] : !s32i) {
0 commit comments