mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-06 04:31:08 +00:00
BBVectorize, when using VTTI, should not form types that will be split.
This is needed so that perl's SHA can be compiled (otherwise BBVectorize takes far too long to find its fixed point). I'll try to come up with a reduced test case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166738 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
12413ae7cb
commit
82149a9106
@ -817,6 +817,15 @@ namespace {
|
||||
IAddressSpace);
|
||||
if (VCost > ICost + JCost)
|
||||
return false;
|
||||
|
||||
// FIXME: We don't want to fuse to a type that will be split, even
|
||||
// if the two input types will also be split and there is no other
|
||||
// associated cost. This check depends on the fact
|
||||
// that the current implementation of getMemoryOpCost returns only
|
||||
// the type-splitting cost.
|
||||
if (VCost > 1)
|
||||
return false;
|
||||
|
||||
CostSavings = ICost + JCost - VCost;
|
||||
}
|
||||
} else {
|
||||
@ -831,6 +840,16 @@ namespace {
|
||||
|
||||
if (VCost > ICost + JCost)
|
||||
return false;
|
||||
|
||||
// FIXME: We don't want to fuse to a type that will be split, even
|
||||
// if the two input types will also be split and there is no other
|
||||
// associated cost. This check depends on the fact
|
||||
// that the current implementation of getMemoryOpCost returns only
|
||||
// the type-splitting cost (and does nothing else).
|
||||
unsigned VTypeCost = VTTI->getMemoryOpCost(I->getOpcode(), VT1, 0, 0);
|
||||
if (VTypeCost > 1)
|
||||
return false;
|
||||
|
||||
CostSavings = ICost + JCost - VCost;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user