Fix upgrade of setcc with bool operands.
authorReid Spencer <rspencer@reidspencer.com>
Wed, 6 Dec 2006 06:25:22 +0000 (06:25 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Wed, 6 Dec 2006 06:25:22 +0000 (06:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32266 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-upgrade/ParserInternals.h
tools/llvm-upgrade/UpgradeParser.y

index 7fe022efc1d30d39e610c9ab3d1730c8c05597a3..7487a5816013c1357d4c51c12a96a7cf6e2a0b1b 100644 (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(); }
index fd1c293ec309f2e1505ec3c8ebd903213274cd47..e5757c42638489c65c383a8798be81e3247585e7 100644 (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");