Index: src/IceTargetLoweringX8632Traits.h |
diff --git a/src/IceTargetLoweringX8632Traits.h b/src/IceTargetLoweringX8632Traits.h |
index 2010ee45152aae6eb4b9ad5103240c847ad5f7c8..0b33634b8275bd484554491825da61ca9571bd2a 100644 |
--- a/src/IceTargetLoweringX8632Traits.h |
+++ b/src/IceTargetLoweringX8632Traits.h |
@@ -364,6 +364,17 @@ struct TargetX8632Traits { |
assert(RegNum != Variable::NoRegister); |
// TODO(stichnot): Rewrite this as a table lookup from a table computed in a |
// TargetLowering static initializer. |
+ // [abcd]h registers are not convertible to their ?l, ?x, and e?x versions. |
+ switch (RegNum) { |
+ default: |
+ break; |
+ case RegisterSet::Reg_ah: |
+ case RegisterSet::Reg_bh: |
+ case RegisterSet::Reg_ch: |
+ case RegisterSet::Reg_dh: |
+ assert(Ty == IceType_i8 || Ty == IceType_i1); |
Jim Stichnoth
2016/01/10 03:08:56
assert(isByteSizedType(Ty));
(looks like there ar
sehr
2016/01/11 21:49:48
Done.
|
+ return RegNum; |
+ } |
RegNum = getBaseReg(RegNum); |
if (Ty == IceType_i8 || Ty == IceType_i1) { |
switch (RegNum) { |