diff options
-rw-r--r-- | lib/Target/X86/InstSelectSimple.cpp | 5 | ||||
-rw-r--r-- | lib/Target/X86/X86ISelSimple.cpp | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/lib/Target/X86/InstSelectSimple.cpp b/lib/Target/X86/InstSelectSimple.cpp index 91d3013ecd..6adccb15e8 100644 --- a/lib/Target/X86/InstSelectSimple.cpp +++ b/lib/Target/X86/InstSelectSimple.cpp @@ -307,6 +307,11 @@ void ISel::copyConstantToRegister(MachineBasicBlock *MBB, emitGEPOperation(MBB, IP, CE->getOperand(0), CE->op_begin()+1, CE->op_end(), R); return; + } else if (CE->getOpcode() == Instruction::Cast && + isa<PointerType>(CE->getType()) && + isa<PointerType>(CE->getOperand(0)->getType())) { + copyConstantToRegister(MBB, IP, cast<Constant>(CE->getOperand(0)), R); + return; } std::cerr << "Offending expr: " << C << "\n"; diff --git a/lib/Target/X86/X86ISelSimple.cpp b/lib/Target/X86/X86ISelSimple.cpp index 91d3013ecd..6adccb15e8 100644 --- a/lib/Target/X86/X86ISelSimple.cpp +++ b/lib/Target/X86/X86ISelSimple.cpp @@ -307,6 +307,11 @@ void ISel::copyConstantToRegister(MachineBasicBlock *MBB, emitGEPOperation(MBB, IP, CE->getOperand(0), CE->op_begin()+1, CE->op_end(), R); return; + } else if (CE->getOpcode() == Instruction::Cast && + isa<PointerType>(CE->getType()) && + isa<PointerType>(CE->getOperand(0)->getType())) { + copyConstantToRegister(MBB, IP, cast<Constant>(CE->getOperand(0)), R); + return; } std::cerr << "Offending expr: " << C << "\n"; |