mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 22:23:10 +00:00
[x32] Fix FrameIndex check in SelectLEA64_32Addr
Summary: Fixes http://llvm.org/bugs/show_bug.cgi?id=20016 reproducible on new lea-5.ll case. Also use RSP/RBP for x32 lea to save 1 byte used for 0x67 prefix in ESP/EBP case. Test Plan: lea tests modified to include x32/nacl and new test added Reviewers: nadav, dschuff, t.p.northover Subscribers: llvm-commits, zinovy.nis Differential Revision: http://reviews.llvm.org/D4929 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216065 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1428,7 +1428,7 @@ bool X86DAGToDAGISel::SelectLEA64_32Addr(SDValue N, SDValue &Base,
|
||||
RegisterSDNode *RN = dyn_cast<RegisterSDNode>(Base);
|
||||
if (RN && RN->getReg() == 0)
|
||||
Base = CurDAG->getRegister(0, MVT::i64);
|
||||
else if (Base.getValueType() == MVT::i32 && !dyn_cast<FrameIndexSDNode>(N)) {
|
||||
else if (Base.getValueType() == MVT::i32 && !dyn_cast<FrameIndexSDNode>(Base)) {
|
||||
// Base could already be %rip, particularly in the x32 ABI.
|
||||
Base = SDValue(CurDAG->getMachineNode(
|
||||
TargetOpcode::SUBREG_TO_REG, DL, MVT::i64,
|
||||
|
||||
Reference in New Issue
Block a user