Skip to content

Commit 5a40615

Browse files
committed
[EVM] Constraint spills
1 parent 0be0dd1 commit 5a40615

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

llvm/lib/Target/EVM/EVMFinalizeStackFrames.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,16 @@ bool EVMFinalizeStackFrames::runOnModule(Module &M) {
149149
SmallVector<std::pair<MachineFunction *, uint64_t>, 8> ToReplaceFI;
150150

151151
SmallVector<MachineFunction *> MFs;
152-
for_each(M.getFunctionList(), [&MFs, &MMI](Function &F) {
153-
if (MachineFunction *MF = MMI.getMachineFunction(F))
152+
bool CanSpillConstants = false;
153+
for_each(M.getFunctionList(), [&MFs, &MMI, &CanSpillConstants](Function &F) {
154+
if (MachineFunction *MF = MMI.getMachineFunction(F)) {
155+
CanSpillConstants |= MF->getFrameInfo().hasStackObjects();
154156
MFs.push_back(MF);
157+
}
155158
});
156-
157-
if (!MFs.empty() &&
159+
CanSpillConstants |=
160+
!MMI.getModule()->getNamedMetadata("llvm.evm.hasunsafeasm");
161+
if (!MFs.empty() && CanSpillConstants &&
158162
MFs.front()->getFunction().hasFnAttribute("evm-entry-function")) {
159163
EVMConstantSpiller ConstSpiller(M, MMI);
160164
if (ConstSpiller.getSpillSize()) {

0 commit comments

Comments
 (0)