Index: src/IceTargetLoweringX8632.cpp |
diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp |
index 46a587fe1f139727438baf153e72f350b3945311..e0a33633423d988bccba9a5e5e7318b80261a15f 100644 |
--- a/src/IceTargetLoweringX8632.cpp |
+++ b/src/IceTargetLoweringX8632.cpp |
@@ -2152,6 +2152,12 @@ Operand *TargetX8632::legalize(Operand *From, LegalMask Allowed, |
return From; |
} |
if (llvm::isa<Constant>(From)) { |
+ if (llvm::isa<ConstantUndef>(From)) { |
+ // Lower undefs to zero. Another option is to lower undefs to an |
Jim Stichnoth
2014/06/18 13:43:33
Please help future developers. :) Leave the FakeD
|
+ // uninitialized register; however, using an uninitialized register |
+ // results in less predictable code. |
+ From = Ctx->getConstantZero(From->getType()); |
+ } |
if (!(Allowed & Legal_Imm)) { |
Variable *Reg = makeReg(From->getType(), RegNum); |
_mov(Reg, From); |