diff --git a/clang/lib/CIR/CodeGen/LowerToLLVM.cpp b/clang/lib/CIR/CodeGen/LowerToLLVM.cpp index 3e726c5bd3b8..d0ea882f4606 100644 --- a/clang/lib/CIR/CodeGen/LowerToLLVM.cpp +++ b/clang/lib/CIR/CodeGen/LowerToLLVM.cpp @@ -12,6 +12,7 @@ #include "mlir/Conversion/AffineToStandard/AffineToStandard.h" #include "mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h" +#include "mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h" #include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h" #include "mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h" #include "mlir/Conversion/LLVMCommon/ConversionTarget.h" @@ -462,6 +463,8 @@ void ConvertCIRToLLVMPass::runOnOperation() { mlir::arith::populateArithmeticToLLVMConversionPatterns(typeConverter, patterns); populateSCFToControlFlowConversionPatterns(patterns); + mlir::cf::populateControlFlowToLLVMConversionPatterns(typeConverter, + patterns); populateMemRefToLLVMConversionPatterns(typeConverter, patterns); populateFuncToLLVMConversionPatterns(typeConverter, patterns); diff --git a/clang/test/CIR/CIRToLLVM/goto.cir b/clang/test/CIR/CIRToLLVM/goto.cir index b82303d202b3..abe2cb3c23ca 100644 --- a/clang/test/CIR/CIRToLLVM/goto.cir +++ b/clang/test/CIR/CIRToLLVM/goto.cir @@ -1,10 +1,6 @@ // RUN: cir-tool %s -canonicalize -cir-to-func -cir-to-memref -o - | FileCheck %s -check-prefix=MLIR // RUN: cir-tool %s -canonicalize -cir-to-func -cir-to-memref -cir-to-llvm -o - | mlir-translate -mlir-to-llvmir | FileCheck %s -check-prefix=LLVM -// FIXME: after rebasing against July's 2022 mlir, we get "failed to legalize -// operation 'cf.br'" from -cir-to-llvm -// XFAIL: * - module { cir.func @foo() { %0 = cir.alloca i32, cir.ptr , ["b", cinit] {alignment = 4 : i64}