diff --git a/mlir/lib/Target/Cpp/TranslateToCpp.cpp b/mlir/lib/Target/Cpp/TranslateToCpp.cpp --- a/mlir/lib/Target/Cpp/TranslateToCpp.cpp +++ b/mlir/lib/Target/Cpp/TranslateToCpp.cpp @@ -677,14 +677,16 @@ } LogicalResult CppEmitter::emitAttribute(Location loc, Attribute attr) { - auto printInt = [&](APInt val, bool isSigned) { + auto printInt = [&](APInt val, bool isUnsigned) { if (val.getBitWidth() == 1) { if (val.getBoolValue()) os << "true"; else os << "false"; } else { - val.print(os, isSigned); + SmallString<128> strValue; + val.toString(strValue, 10, !isUnsigned, false); + os << strValue; } }; diff --git a/mlir/test/Target/Cpp/const.mlir b/mlir/test/Target/Cpp/const.mlir --- a/mlir/test/Target/Cpp/const.mlir +++ b/mlir/test/Target/Cpp/const.mlir @@ -5,22 +5,34 @@ func @emitc_constant() { %c0 = "emitc.constant"(){value = #emitc.opaque<""> : i32} : () -> i32 %c1 = "emitc.constant"(){value = 42 : i32} : () -> i32 - %c2 = "emitc.constant"(){value = #emitc.opaque<""> : !emitc.opaque<"int32_t*">} : () -> !emitc.opaque<"int32_t*"> - %c3 = "emitc.constant"(){value = #emitc.opaque<"NULL"> : !emitc.opaque<"int32_t*">} : () -> !emitc.opaque<"int32_t*"> + %c2 = "emitc.constant"(){value = -1 : i32} : () -> i32 + %c3 = "emitc.constant"(){value = -1 : si8} : () -> si8 + %c4 = "emitc.constant"(){value = 255 : ui8} : () -> ui8 + %c5 = "emitc.constant"(){value = #emitc.opaque<""> : !emitc.opaque<"int32_t*">} : () -> !emitc.opaque<"int32_t*"> + %c6 = "emitc.constant"(){value = #emitc.opaque<"NULL"> : !emitc.opaque<"int32_t*">} : () -> !emitc.opaque<"int32_t*"> return } // CPP-DEFAULT: void emitc_constant() { // CPP-DEFAULT-NEXT: int32_t [[V0:[^ ]*]]; // CPP-DEFAULT-NEXT: int32_t [[V1:[^ ]*]] = 42; -// CPP-DEFAULT-NEXT: int32_t* [[V2:[^ ]*]]; -// CPP-DEFAULT-NEXT: int32_t* [[V3:[^ ]*]] = NULL; +// CPP-DEFAULT-NEXT: int32_t [[V2:[^ ]*]] = -1; +// CPP-DEFAULT-NEXT: int8_t [[V3:[^ ]*]] = -1; +// CPP-DEFAULT-NEXT: uint8_t [[V4:[^ ]*]] = 255; +// CPP-DEFAULT-NEXT: int32_t* [[V5:[^ ]*]]; +// CPP-DEFAULT-NEXT: int32_t* [[V6:[^ ]*]] = NULL; // CPP-DECLTOP: void emitc_constant() { // CPP-DECLTOP-NEXT: int32_t [[V0:[^ ]*]]; // CPP-DECLTOP-NEXT: int32_t [[V1:[^ ]*]]; -// CPP-DECLTOP-NEXT: int32_t* [[V2:[^ ]*]]; -// CPP-DECLTOP-NEXT: int32_t* [[V3:[^ ]*]]; +// CPP-DECLTOP-NEXT: int32_t [[V2:[^ ]*]]; +// CPP-DECLTOP-NEXT: int8_t [[V3:[^ ]*]]; +// CPP-DECLTOP-NEXT: uint8_t [[V4:[^ ]*]]; +// CPP-DECLTOP-NEXT: int32_t* [[V5:[^ ]*]]; +// CPP-DECLTOP-NEXT: int32_t* [[V6:[^ ]*]]; // CPP-DECLTOP-NEXT: ; // CPP-DECLTOP-NEXT: [[V1]] = 42; +// CPP-DECLTOP-NEXT: [[V2]] = -1; +// CPP-DECLTOP-NEXT: [[V3]] = -1; +// CPP-DECLTOP-NEXT: [[V4]] = 255; // CPP-DECLTOP-NEXT: ; -// CPP-DECLTOP-NEXT: [[V3]] = NULL; +// CPP-DECLTOP-NEXT: [[V6]] = NULL;