mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-13 22:00:14 +00:00
PR17103: Scoped enumerations with signed integer types have signed integer
representation. Don't emit comparisons on them as 'icmp ult'! llvm-svn: 190010
This commit is contained in:
parent
1df64b081b
commit
49a497fa6c
@ -738,9 +738,9 @@ bool Type::isSignedIntegerOrEnumerationType() const {
|
||||
|
||||
bool Type::hasSignedIntegerRepresentation() const {
|
||||
if (const VectorType *VT = dyn_cast<VectorType>(CanonicalType))
|
||||
return VT->getElementType()->isSignedIntegerType();
|
||||
return VT->getElementType()->isSignedIntegerOrEnumerationType();
|
||||
else
|
||||
return isSignedIntegerType();
|
||||
return isSignedIntegerOrEnumerationType();
|
||||
}
|
||||
|
||||
/// isUnsignedIntegerType - Return true if this is an integer type that is
|
||||
@ -778,9 +778,9 @@ bool Type::isUnsignedIntegerOrEnumerationType() const {
|
||||
|
||||
bool Type::hasUnsignedIntegerRepresentation() const {
|
||||
if (const VectorType *VT = dyn_cast<VectorType>(CanonicalType))
|
||||
return VT->getElementType()->isUnsignedIntegerType();
|
||||
return VT->getElementType()->isUnsignedIntegerOrEnumerationType();
|
||||
else
|
||||
return isUnsignedIntegerType();
|
||||
return isUnsignedIntegerOrEnumerationType();
|
||||
}
|
||||
|
||||
bool Type::isFloatingType() const {
|
||||
|
@ -1,4 +1,4 @@
|
||||
// RUN: %clang_cc1 -std=c++11 -emit-llvm -o - %s
|
||||
// RUN: %clang_cc1 -std=c++11 -emit-llvm -o - %s | FileCheck %s
|
||||
|
||||
// PR9923
|
||||
enum class Color { red, blue, green };
|
||||
@ -15,3 +15,10 @@ void h(Colour);
|
||||
void i() {
|
||||
h(Colour::grey);
|
||||
}
|
||||
|
||||
enum struct PR17103 : int { a = -1, b = 1 };
|
||||
bool cmp(PR17103 x, PR17103 y) { return x < y; }
|
||||
|
||||
// CHECK-LABEL: @_Z3cmp7PR17103S_(
|
||||
// CHECK-NOT: }
|
||||
// CHECK: icmp slt
|
||||
|
Loading…
x
Reference in New Issue
Block a user