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
const char* comparator = SrcTy.isPointer() ? ", null" :
(SrcTy.isFloatingPoint() ? ", 0.0" : ", 0");
if (isConst)
Result = "setne (" + Source + comparator + ")";
else
Result = "setne " + Source + comparator;
#if UPGRADE_SETCOND_OPS
const char* compareOp = SrcTy.isFloatingPoint() ? "setne " : "icmp ne ";
#else
const char* compareOp = "setne";
#endif
if (isConst) {
Result = "(" + Source + comparator + ")";
Result = compareOp + Result;
} else
Result = compareOp + Source + comparator;
return Result; // skip cast processing below
}
ResolveType(SrcTy);