@@ -261,7 +261,9 @@ class CIRGenConsumer : public clang::ASTConsumer {
261
261
}
262
262
}
263
263
264
- auto emitCIR = [&]() {
264
+ switch (action) {
265
+ case CIRGenAction::OutputType::EmitCIR:
266
+ case CIRGenAction::OutputType::EmitCIRFlat:
265
267
if (outputStream && mlirMod) {
266
268
// FIXME: we cannot roundtrip prettyForm=true right now.
267
269
mlir::OpPrintingFlags flags;
@@ -270,45 +272,25 @@ class CIRGenConsumer : public clang::ASTConsumer {
270
272
flags.assumeVerified ();
271
273
mlirMod->print (*outputStream, flags);
272
274
}
273
- };
274
-
275
- switch (action) {
276
- case CIRGenAction::OutputType::EmitCIR:
277
- case CIRGenAction::OutputType::EmitCIRFlat:
278
- emitCIR ();
279
275
break ;
280
276
case CIRGenAction::OutputType::EmitMLIR: {
281
277
mlir::ModuleOp loweredMlirModule;
282
- switch (feOptions.MLIRTargetDialect ) {
283
- case clang::FrontendOptions::MLIR_Default:
284
- loweredMlirModule =
285
- feOptions.ClangIRDirectLowering
286
- ? direct::lowerDirectlyFromCIRToLLVMDialect (mlirMod)
287
- : lowerFromCIRToMLIR (mlirMod, mlirCtx.get ());
288
-
289
- break ;
290
- case clang::FrontendOptions::MLIR_STD:
278
+ if (feOptions.ClangIRDirectLowering ) {
291
279
// Attempting to emit std with direct lowering is already checked by
292
280
// Compiler Invocation
293
- loweredMlirModule = lowerFromCIRToMLIR (mlirMod, mlirCtx.get ());
294
- break ;
295
- case clang::FrontendOptions::MLIR_LLVM:
296
- loweredMlirModule =
297
- feOptions.ClangIRDirectLowering
298
- ? direct::lowerDirectlyFromCIRToLLVMDialect (mlirMod)
299
- : lowerFromCIRToMLIRToLLVMDialect (mlirMod, mlirCtx.get ());
300
- break ;
301
- case clang::FrontendOptions::MLIR_CIR:
302
- emitCIR ();
303
- break ;
304
- }
305
- if (loweredMlirModule) {
306
- assert (outputStream && " Why are we here without an output stream?" );
307
- // FIXME: we cannot roundtrip prettyForm=true right now.
308
- mlir::OpPrintingFlags flags;
309
- flags.enableDebugInfo (/* enable=*/ true , /* prettyForm=*/ false );
310
- loweredMlirModule->print (*outputStream, flags);
281
+ loweredMlirModule = direct::lowerDirectlyFromCIRToLLVMDialect (mlirMod);
282
+ } else {
283
+ if (feOptions.MLIRTargetDialect == clang::FrontendOptions::MLIR_LLVM)
284
+ loweredMlirModule = lowerFromCIRToMLIRToLLVMDialect (mlirMod, mlirCtx.get ());
285
+ else // STD and Default cases
286
+ loweredMlirModule = lowerFromCIRToMLIR (mlirMod, mlirCtx.get ());
311
287
}
288
+ assert (loweredMlirModule && " MLIR module does not exist, but lowering did not fail?" );
289
+ assert (outputStream && " Why are we here without an output stream?" );
290
+ // FIXME: we cannot roundtrip prettyForm=true right now.
291
+ mlir::OpPrintingFlags flags;
292
+ flags.enableDebugInfo (/* enable=*/ true , /* prettyForm=*/ false );
293
+ loweredMlirModule->print (*outputStream, flags);
312
294
break ;
313
295
}
314
296
case CIRGenAction::OutputType::EmitLLVM:
0 commit comments