For now, avoid issuing extract_subreg to reuse lower 8-bit, it's not safe in 32-bit.
authorEvan Cheng <evan.cheng@apple.com>
Wed, 13 Jan 2010 08:01:32 +0000 (08:01 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Wed, 13 Jan 2010 08:01:32 +0000 (08:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93307 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrInfo.cpp

index a1bacbf0e643b622418c47ab8167449f2c36c78c..7b39fb311cba8f27fa01df85579e3f4faa78ac18 100644 (file)
@@ -724,6 +724,10 @@ X86InstrInfo::isCoalescableExtInstr(const MachineInstr &MI,
   case X86::MOVZX32rr8:
   case X86::MOVSX64rr8:
   case X86::MOVZX64rr8:
+    if (!TM.getSubtarget<X86Subtarget>().is64Bit())
+      // It's not always legal to reference the low 8-bit of the larger
+      // register in 32-bit mode.
+      return false;
   case X86::MOVSX32rr16:
   case X86::MOVZX32rr16:
   case X86::MOVSX64rr16: