Skip to content

Commit a1c9dd7

Browse files
authored
[mlir][emitc] Fix the error with closing bracket in CppEmitter in switchOp (#110269)
While working with `emitc::SwitchOp`, it was identified that `mlir-translate` emits **invalid C code** for switch. This commit fixes the issue with the closing bracket in `CppEmitter` within `printOperation` for `emitc::SwitchOp`.
1 parent 99cec7f commit a1c9dd7

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

mlir/include/mlir/Dialect/EmitC/IR/EmitC.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1405,6 +1405,7 @@ def EmitC_SwitchOp : EmitC_Op<"switch", [RecursiveMemoryEffects,
14051405
func2(v4);
14061406
break;
14071407
}
1408+
}
14081409
```
14091410
}];
14101411

mlir/lib/Target/Cpp/TranslateToCpp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ static LogicalResult printOperation(CppEmitter &emitter,
489489
if (failed(emitSwitchCase(emitter, os, switchOp.getDefaultRegion())))
490490
return failure();
491491

492-
os.unindent() << "}";
492+
os.unindent() << "}\n}";
493493
return success();
494494
}
495495

mlir/test/Target/Cpp/switch.mlir

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// CPP-DEFAULT: func2(v4);
1818
// CPP-DEFAULT: break;
1919
// CPP-DEFAULT: }
20+
// CPP-DEFAULT: }
2021
// CPP-DEFAULT: return;
2122
// CPP-DEFAULT: }
2223

@@ -40,6 +41,7 @@
4041
// CPP-DECLTOP: func2(v2);
4142
// CPP-DECLTOP: break;
4243
// CPP-DECLTOP: }
44+
// CPP-DECLTOP: }
4345
// CPP-DECLTOP: return;
4446
// CPP-DECLTOP: }
4547
func.func @emitc_switch_ptrdiff_t() {
@@ -77,6 +79,7 @@ func.func @emitc_switch_ptrdiff_t() {
7779
// CPP-DEFAULT: func2(v4);
7880
// CPP-DEFAULT: break;
7981
// CPP-DEFAULT: }
82+
// CPP-DEFAULT: }
8083
// CPP-DEFAULT: return;
8184
// CPP-DEFAULT: }
8285

@@ -100,6 +103,7 @@ func.func @emitc_switch_ptrdiff_t() {
100103
// CPP-DECLTOP: func2(v2);
101104
// CPP-DECLTOP: break;
102105
// CPP-DECLTOP: }
106+
// CPP-DECLTOP: }
103107
// CPP-DECLTOP: return;
104108
// CPP-DECLTOP: }
105109
func.func @emitc_switch_ssize_t() {
@@ -138,6 +142,7 @@ func.func @emitc_switch_ssize_t() {
138142
// CPP-DEFAULT: func2(v4);
139143
// CPP-DEFAULT: break;
140144
// CPP-DEFAULT: }
145+
// CPP-DEFAULT: }
141146
// CPP-DEFAULT: return;
142147
// CPP-DEFAULT: }
143148

@@ -161,6 +166,7 @@ func.func @emitc_switch_ssize_t() {
161166
// CPP-DECLTOP: func2(v2);
162167
// CPP-DECLTOP: break;
163168
// CPP-DECLTOP: }
169+
// CPP-DECLTOP: }
164170
// CPP-DECLTOP: return;
165171
// CPP-DECLTOP: }
166172
func.func @emitc_switch_size_t() {
@@ -199,6 +205,7 @@ func.func @emitc_switch_size_t() {
199205
// CPP-DEFAULT: func2(v4);
200206
// CPP-DEFAULT: break;
201207
// CPP-DEFAULT: }
208+
// CPP-DEFAULT: }
202209
// CPP-DEFAULT: return;
203210
// CPP-DEFAULT: }
204211

@@ -222,6 +229,7 @@ func.func @emitc_switch_size_t() {
222229
// CPP-DECLTOP: func2(v2);
223230
// CPP-DECLTOP: break;
224231
// CPP-DECLTOP: }
232+
// CPP-DECLTOP: }
225233
// CPP-DECLTOP: return;
226234
// CPP-DECLTOP: }
227235
func.func @emitc_switch_index() {
@@ -260,6 +268,7 @@ func.func @emitc_switch_index() {
260268
// CPP-DEFAULT: func2(v4);
261269
// CPP-DEFAULT: break;
262270
// CPP-DEFAULT: }
271+
// CPP-DEFAULT: }
263272
// CPP-DEFAULT: return;
264273
// CPP-DEFAULT: }
265274

@@ -283,6 +292,7 @@ func.func @emitc_switch_index() {
283292
// CPP-DECLTOP: func2(v2);
284293
// CPP-DECLTOP: break;
285294
// CPP-DECLTOP: }
295+
// CPP-DECLTOP: }
286296
// CPP-DECLTOP: return;
287297
// CPP-DECLTOP: }
288298
func.func @emitc_switch_opaque() {
@@ -322,6 +332,7 @@ func.func @emitc_switch_opaque() {
322332
// CPP-DEFAULT: func2(v4);
323333
// CPP-DEFAULT: break;
324334
// CPP-DEFAULT: }
335+
// CPP-DEFAULT: }
325336
// CPP-DEFAULT: return;
326337
// CPP-DEFAULT: }
327338

@@ -345,6 +356,7 @@ func.func @emitc_switch_opaque() {
345356
// CPP-DECLTOP: func2(v2);
346357
// CPP-DECLTOP: break;
347358
// CPP-DECLTOP: }
359+
// CPP-DECLTOP: }
348360
// CPP-DECLTOP: return;
349361
// CPP-DECLTOP: }
350362
func.func @emitc_switch_i1() {
@@ -383,6 +395,7 @@ func.func @emitc_switch_i1() {
383395
// CPP-DEFAULT: func2(v4);
384396
// CPP-DEFAULT: break;
385397
// CPP-DEFAULT: }
398+
// CPP-DEFAULT: }
386399
// CPP-DEFAULT: return;
387400
// CPP-DEFAULT: }
388401

@@ -406,6 +419,7 @@ func.func @emitc_switch_i1() {
406419
// CPP-DECLTOP: func2(v2);
407420
// CPP-DECLTOP: break;
408421
// CPP-DECLTOP: }
422+
// CPP-DECLTOP: }
409423
// CPP-DECLTOP: return;
410424
// CPP-DECLTOP: }
411425
func.func @emitc_switch_i8() {
@@ -444,6 +458,7 @@ func.func @emitc_switch_i8() {
444458
// CPP-DEFAULT: func2(v4);
445459
// CPP-DEFAULT: break;
446460
// CPP-DEFAULT: }
461+
// CPP-DEFAULT: }
447462
// CPP-DEFAULT: return;
448463
// CPP-DEFAULT: }
449464

@@ -467,6 +482,7 @@ func.func @emitc_switch_i8() {
467482
// CPP-DECLTOP: func2(v2);
468483
// CPP-DECLTOP: break;
469484
// CPP-DECLTOP: }
485+
// CPP-DECLTOP: }
470486
// CPP-DECLTOP: return;
471487
// CPP-DECLTOP: }
472488
func.func @emitc_switch_ui8() {
@@ -505,6 +521,7 @@ func.func @emitc_switch_ui8() {
505521
// CPP-DEFAULT: func2(v4);
506522
// CPP-DEFAULT: break;
507523
// CPP-DEFAULT: }
524+
// CPP-DEFAULT: }
508525
// CPP-DEFAULT: return;
509526
// CPP-DEFAULT: }
510527

@@ -528,6 +545,7 @@ func.func @emitc_switch_ui8() {
528545
// CPP-DECLTOP: func2(v2);
529546
// CPP-DECLTOP: break;
530547
// CPP-DECLTOP: }
548+
// CPP-DECLTOP: }
531549
// CPP-DECLTOP: return;
532550
// CPP-DECLTOP: }
533551
func.func @emitc_switch_i16() {
@@ -566,6 +584,7 @@ func.func @emitc_switch_i16() {
566584
// CPP-DEFAULT: func2(v4);
567585
// CPP-DEFAULT: break;
568586
// CPP-DEFAULT: }
587+
// CPP-DEFAULT: }
569588
// CPP-DEFAULT: return;
570589
// CPP-DEFAULT: }
571590

@@ -589,6 +608,7 @@ func.func @emitc_switch_i16() {
589608
// CPP-DECLTOP: func2(v2);
590609
// CPP-DECLTOP: break;
591610
// CPP-DECLTOP: }
611+
// CPP-DECLTOP: }
592612
// CPP-DECLTOP: return;
593613
// CPP-DECLTOP: }
594614
func.func @emitc_switch_ui16() {
@@ -627,6 +647,7 @@ func.func @emitc_switch_ui16() {
627647
// CPP-DEFAULT: func2(v4);
628648
// CPP-DEFAULT: break;
629649
// CPP-DEFAULT: }
650+
// CPP-DEFAULT: }
630651
// CPP-DEFAULT: return;
631652
// CPP-DEFAULT: }
632653

@@ -650,6 +671,7 @@ func.func @emitc_switch_ui16() {
650671
// CPP-DECLTOP: func2(v2);
651672
// CPP-DECLTOP: break;
652673
// CPP-DECLTOP: }
674+
// CPP-DECLTOP: }
653675
// CPP-DECLTOP: return;
654676
// CPP-DECLTOP: }
655677
func.func @emitc_switch_i32() {
@@ -688,6 +710,7 @@ func.func @emitc_switch_i32() {
688710
// CPP-DEFAULT: func2(v4);
689711
// CPP-DEFAULT: break;
690712
// CPP-DEFAULT: }
713+
// CPP-DEFAULT: }
691714
// CPP-DEFAULT: return;
692715
// CPP-DEFAULT: }
693716

@@ -711,6 +734,7 @@ func.func @emitc_switch_i32() {
711734
// CPP-DECLTOP: func2(v2);
712735
// CPP-DECLTOP: break;
713736
// CPP-DECLTOP: }
737+
// CPP-DECLTOP: }
714738
// CPP-DECLTOP: return;
715739
// CPP-DECLTOP: }
716740
func.func @emitc_switch_ui32() {
@@ -749,6 +773,7 @@ func.func @emitc_switch_ui32() {
749773
// CPP-DEFAULT: func2(v4);
750774
// CPP-DEFAULT: break;
751775
// CPP-DEFAULT: }
776+
// CPP-DEFAULT: }
752777
// CPP-DEFAULT: return;
753778
// CPP-DEFAULT: }
754779

@@ -772,6 +797,7 @@ func.func @emitc_switch_ui32() {
772797
// CPP-DECLTOP: func2(v2);
773798
// CPP-DECLTOP: break;
774799
// CPP-DECLTOP: }
800+
// CPP-DECLTOP: }
775801
// CPP-DECLTOP: return;
776802
// CPP-DECLTOP: }
777803
func.func @emitc_switch_i64() {
@@ -810,6 +836,7 @@ func.func @emitc_switch_i64() {
810836
// CPP-DEFAULT: func2(v4);
811837
// CPP-DEFAULT: break;
812838
// CPP-DEFAULT: }
839+
// CPP-DEFAULT: }
813840
// CPP-DEFAULT: return;
814841
// CPP-DEFAULT: }
815842

@@ -833,6 +860,7 @@ func.func @emitc_switch_i64() {
833860
// CPP-DECLTOP: func2(v2);
834861
// CPP-DECLTOP: break;
835862
// CPP-DECLTOP: }
863+
// CPP-DECLTOP: }
836864
// CPP-DECLTOP: return;
837865
// CPP-DECLTOP: }
838866
func.func @emitc_switch_ui64() {

0 commit comments

Comments
 (0)