When upgrading cast to bool to a setne, generate icmp ne instead.

llvm-svn: 32399
This commit is contained in:
Reid Spencer 2006-12-09 16:56:55 +00:00
parent b558b57e75
commit 87644df5bc
1 changed files with 10 additions and 4 deletions

View File

@ -194,10 +194,16 @@ static std::string getCastUpgrade(
// the original intent by replace the cast with a setne // the original intent by replace the cast with a setne
const char* comparator = SrcTy.isPointer() ? ", null" : const char* comparator = SrcTy.isPointer() ? ", null" :
(SrcTy.isFloatingPoint() ? ", 0.0" : ", 0"); (SrcTy.isFloatingPoint() ? ", 0.0" : ", 0");
if (isConst) #if UPGRADE_SETCOND_OPS
Result = "setne (" + Source + comparator + ")"; const char* compareOp = SrcTy.isFloatingPoint() ? "setne " : "icmp ne ";
else #else
Result = "setne " + Source + comparator; const char* compareOp = "setne";
#endif
if (isConst) {
Result = "(" + Source + comparator + ")";
Result = compareOp + Result;
} else
Result = compareOp + Source + comparator;
return Result; // skip cast processing below return Result; // skip cast processing below
} }
ResolveType(SrcTy); ResolveType(SrcTy);