During local stack slot allocation, the materializeFrameBaseRegister function
authorBill Wendling <isanbard@gmail.com>
Fri, 17 Dec 2010 23:09:14 +0000 (23:09 +0000)
committerBill Wendling <isanbard@gmail.com>
Fri, 17 Dec 2010 23:09:14 +0000 (23:09 +0000)
commit976ef86689ed065361a748f81c44ca3510af2202
treee3b48224b633e85501414eab36f8dd58eddaf951
parentd727343a407bd3056f93e96c60eee72725d458c8
During local stack slot allocation, the materializeFrameBaseRegister function
may be called. If the entry block is empty, the insertion point iterator will be
the "end()" value. Calling ->getParent() on it (among others) causes problems.

Modify materializeFrameBaseRegister to take the machine basic block and insert
the frame base register at the beginning of that block. (It's very similar to
what the code does all ready. The only difference is that it will always insert
at the beginning of the entry block instead of after a previous materialization
of the frame base register. I doubt that that matters here.)

<rdar://problem/8782198>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122104 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Target/TargetRegisterInfo.h
lib/CodeGen/LocalStackSlotAllocation.cpp
lib/Target/ARM/ARMBaseRegisterInfo.cpp
lib/Target/ARM/ARMBaseRegisterInfo.h
test/CodeGen/ARM/2010-12-17-LocalStackSlotCrash.ll [new file with mode: 0644]