Fix upgrade of setcc with bool operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32266 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Reid Spencer
2006-12-06 06:25:22 +00:00
parent 2fcfdb79d0
commit 49aeed7455
2 changed files with 6 additions and 2 deletions

View File

@@ -78,6 +78,10 @@ struct TypeInfo {
oldTy == UIntTy || oldTy == ULongTy;
}
bool isBool() const {
return oldTy == BoolTy;
}
bool isSignless() const { return !isSigned() && !isUnsigned(); }
bool isInteger() const { return isSigned() || isUnsigned(); }
bool isIntegral() const { return oldTy == BoolTy || isInteger(); }

View File

@@ -23,7 +23,7 @@
#define YYERROR_VERBOSE 1
#define YYINCLUDED_STDLIB_H
#define YYDEBUG 1
#define UPGRADE_SETCOND_OPS 0
#define UPGRADE_SETCOND_OPS 1
int yylex(); // declaration" of xxx warnings.
int yyparse();
@@ -255,7 +255,7 @@ getCompareOp(const std::string& setcc, const TypeInfo& TI) {
result.erase(5,1);
else if (TI.isSigned())
result[5] = 's';
else if (TI.isUnsigned() || TI.isPointer())
else if (TI.isUnsigned() || TI.isPointer() || TI.isBool())
result[5] = 'u';
else
yyerror("Invalid integral type for setcc");