Fix upgrade of setcc with bool operands.

llvm-svn: 32266
This commit is contained in:
Reid Spencer 2006-12-06 06:25:22 +00:00
parent a428b29cdb
commit 649b2046eb
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");