From a6958e6e3bfc3e85add6c5f7792f948546990228 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Mon, 2 Oct 2023 10:40:07 +0300 Subject: [PATCH] MachineFunctionPass: Clear properties before running function This ensures !isSSA checks in the function work if the input MIR happened to appear as SSA. --- llvm/lib/CodeGen/MachineFunctionPass.cpp | 3 ++- llvm/lib/CodeGen/RegisterCoalescer.cpp | 8 -------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/llvm/lib/CodeGen/MachineFunctionPass.cpp b/llvm/lib/CodeGen/MachineFunctionPass.cpp index 3a1e1720be9c6..d57a912f418b7 100644 --- a/llvm/lib/CodeGen/MachineFunctionPass.cpp +++ b/llvm/lib/CodeGen/MachineFunctionPass.cpp @@ -88,6 +88,8 @@ bool MachineFunctionPass::runOnFunction(Function &F) { MF.print(OS); } + MFProps.reset(ClearedProperties); + bool RV = runOnMachineFunction(MF); if (ShouldEmitSizeRemarks) { @@ -114,7 +116,6 @@ bool MachineFunctionPass::runOnFunction(Function &F) { } MFProps.set(SetProperties); - MFProps.reset(ClearedProperties); // For --print-changed, print if the serialized MF has changed. Modes other // than quiet/verbose are unimplemented and treated the same as 'quiet'. diff --git a/llvm/lib/CodeGen/RegisterCoalescer.cpp b/llvm/lib/CodeGen/RegisterCoalescer.cpp index 516095a699ea1..238462113bfe7 100644 --- a/llvm/lib/CodeGen/RegisterCoalescer.cpp +++ b/llvm/lib/CodeGen/RegisterCoalescer.cpp @@ -4131,14 +4131,6 @@ bool RegisterCoalescer::runOnMachineFunction(MachineFunction &fn) { else JoinGlobalCopies = (EnableGlobalCopies == cl::BOU_TRUE); - // FIXME: MachineFunctionProperties cannot express the required pre-property - // no-SSA. When running a MIR testcase without any virtual register defs, the - // MIR parser assumes SSA. MachineFunctionPass::getClearedProperties is called - // after the pass is run, so the properties at this point say it's an SSA - // function. Forcibly clear it here so -verify-coalescing doesn't complain - // after multiple virtual register defs are introduced. - MRI->leaveSSA(); - // If there are PHIs tracked by debug-info, they will need updating during // coalescing. Build an index of those PHIs to ease updating. SlotIndexes *Slots = LIS->getSlotIndexes();