diff --git a/clang/lib/CIR/Dialect/IR/CIRDialect.cpp b/clang/lib/CIR/Dialect/IR/CIRDialect.cpp index 7b71b7d61cda..eaeb1ddc5bee 100644 --- a/clang/lib/CIR/Dialect/IR/CIRDialect.cpp +++ b/clang/lib/CIR/Dialect/IR/CIRDialect.cpp @@ -275,7 +275,7 @@ static LogicalResult checkConstantTypes(mlir::Operation *op, mlir::Type opType, return success(); } - if (attrType.isa()) { + if (attrType.isa()) { auto at = attrType.cast(); if (at.getType() != opType) { return op->emitOpError("result type (") diff --git a/clang/test/CIR/IR/int.cir b/clang/test/CIR/IR/int.cir index 233198e4e335..3acaacd011f7 100644 --- a/clang/test/CIR/IR/int.cir +++ b/clang/test/CIR/IR/int.cir @@ -8,10 +8,10 @@ !s32i = !cir.int !s64i = !cir.int -!u8i = !cir.int -!u16i = !cir.int -!u32i = !cir.int -!u64i = !cir.int +!u8i = !cir.int +!u16i = !cir.int +!u32i = !cir.int +!u64i = !cir.int cir.func @validIntTypesAndAttributes() -> () { diff --git a/clang/test/CIR/IR/invalid.cir b/clang/test/CIR/IR/invalid.cir index d353c7d7b878..386417ae2ffd 100644 --- a/clang/test/CIR/IR/invalid.cir +++ b/clang/test/CIR/IR/invalid.cir @@ -781,3 +781,12 @@ module { } } +// ----- + +!s8i = !cir.int +!u8i = !cir.int +cir.func @const_type_mismatch() -> () { + // expected-error@+1 {{'cir.const' op result type ('!cir.int') does not match value type ('!cir.int')}} + %2 = cir.const(#cir.int<0> : !s8i) : !u8i + cir.return +}