diff --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp --- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp +++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp @@ -94,6 +94,8 @@ } if (auto intAttr = attr.dyn_cast()) return llvm::ConstantInt::get(llvmType, intAttr.getValue()); + if (auto boolAttr = attr.dyn_cast()) + return llvm::ConstantInt::get(llvmType, boolAttr.getValue()); if (auto floatAttr = attr.dyn_cast()) return llvm::ConstantFP::get(llvmType, floatAttr.getValue()); if (auto funcAttr = attr.dyn_cast()) diff --git a/mlir/test/Target/llvmir.mlir b/mlir/test/Target/llvmir.mlir --- a/mlir/test/Target/llvmir.mlir +++ b/mlir/test/Target/llvmir.mlir @@ -1177,7 +1177,16 @@ // CHECK: freeze i32 %{{[0-9]+}} %0 = llvm.freeze %x : !llvm.i32 %1 = llvm.mlir.undef : !llvm.i32 - // CHECK: freeze i32 undef + // CHECK: freeze i32 undef %2 = llvm.freeze %1 : !llvm.i32 llvm.return -} \ No newline at end of file +} + +// CHECK-LABEL: @boolConstArg +llvm.func @boolConstArg() -> !llvm.i1 { + // CHECK: ret i1 false + %0 = llvm.mlir.constant(true) : !llvm.i1 + %1 = llvm.mlir.constant(false) : !llvm.i1 + %2 = llvm.and %0, %1 : !llvm.i1 + llvm.return %2 : !llvm.i1 +}