diff options
| author | Anton Sidorenko <anton.sidorenko@syntacore.com> | 2022-11-24 19:14:32 +0300 |
|---|---|---|
| committer | Anton Sidorenko <anton.sidorenko@syntacore.com> | 2022-11-25 10:53:55 +0300 |
| commit | 8e3545a64edbd4cb00ef60cce06ad0f214c0e041 (patch) | |
| tree | 488ac953f5586e927fef2a9fa34d14e3f6764091 /llvm/lib/CodeGen/MachineDebugify.cpp | |
| parent | 06c4103d41beeae0f35abc707f3090d5b6457079 (diff) | |
[Debugify] Accumulate the number of variables in debugify metadata
When a module contains more than one function, we should update debugify metadata
by increasing the number of variables in the function rather than overwritting it.
Previous revert issue is fixed: I forgot to strip all x86-related info from the
test.
Differential Revision: https://reviews.llvm.org/D136949
Diffstat (limited to 'llvm/lib/CodeGen/MachineDebugify.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/MachineDebugify.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/MachineDebugify.cpp b/llvm/lib/CodeGen/MachineDebugify.cpp index b726a032ca18..adf1b51a950d 100644 --- a/llvm/lib/CodeGen/MachineDebugify.cpp +++ b/llvm/lib/CodeGen/MachineDebugify.cpp @@ -153,10 +153,15 @@ bool applyDebugifyMetadataToMachineFunction(MachineModuleInfo &MMI, NMD->setOperand(Idx, MDNode::get(Ctx, ValueAsMetadata::getConstant( ConstantInt::get(Int32Ty, N)))); }; + auto getDebugifyOperand = [&](unsigned Idx) { + return mdconst::extract<ConstantInt>(NMD->getOperand(Idx)->getOperand(0)) + ->getZExtValue(); + }; // Set number of lines. setDebugifyOperand(0, NextLine - 1); // Set number of variables. - setDebugifyOperand(1, VarSet.size()); + auto OldNumVars = getDebugifyOperand(1); + setDebugifyOperand(1, OldNumVars + VarSet.size()); } return true; @@ -166,6 +171,9 @@ bool applyDebugifyMetadataToMachineFunction(MachineModuleInfo &MMI, /// legacy module pass manager. struct DebugifyMachineModule : public ModulePass { bool runOnModule(Module &M) override { + // We will insert new debugify metadata, so erasing the old one. + assert(!M.getNamedMetadata("llvm.mir.debugify") && + "llvm.mir.debugify metadata already exists! Strip it first"); MachineModuleInfo &MMI = getAnalysis<MachineModuleInfoWrapperPass>().getMMI(); return applyDebugifyMetadata( |
