mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-19 06:31:18 +00:00
Fix PR1446 by not scalarrepl'ing giant structures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37326 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d20d40299b
commit
7139406707
@ -148,6 +148,8 @@ bool SROA::performScalarRepl(Function &F) {
|
|||||||
if (AllocationInst *A = dyn_cast<AllocationInst>(I))
|
if (AllocationInst *A = dyn_cast<AllocationInst>(I))
|
||||||
WorkList.push_back(A);
|
WorkList.push_back(A);
|
||||||
|
|
||||||
|
const TargetData &TD = getAnalysis<TargetData>();
|
||||||
|
|
||||||
// Process the worklist
|
// Process the worklist
|
||||||
bool Changed = false;
|
bool Changed = false;
|
||||||
while (!WorkList.empty()) {
|
while (!WorkList.empty()) {
|
||||||
@ -177,7 +179,9 @@ bool SROA::performScalarRepl(Function &F) {
|
|||||||
// value cannot be decomposed at all.
|
// value cannot be decomposed at all.
|
||||||
if (!AI->isArrayAllocation() &&
|
if (!AI->isArrayAllocation() &&
|
||||||
(isa<StructType>(AI->getAllocatedType()) ||
|
(isa<StructType>(AI->getAllocatedType()) ||
|
||||||
isa<ArrayType>(AI->getAllocatedType()))) {
|
isa<ArrayType>(AI->getAllocatedType())) &&
|
||||||
|
AI->getAllocatedType()->isSized() &&
|
||||||
|
TD.getTypeSize(AI->getAllocatedType()) < 128) {
|
||||||
// Check that all of the users of the allocation are capable of being
|
// Check that all of the users of the allocation are capable of being
|
||||||
// transformed.
|
// transformed.
|
||||||
switch (isSafeAllocaToScalarRepl(AI)) {
|
switch (isSafeAllocaToScalarRepl(AI)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user