diff options
author | Alexandros Lamprineas <alexandros.lamprineas@arm.com> | 2023-09-19 14:40:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-19 14:40:31 +0100 |
commit | e15d72adac66790a78a51a3087b56b2bde6b778a (patch) | |
tree | cc9505b9567cf4820bb8b234af5f1c0d3b4f1dff /llvm/lib/Transforms/IPO/FunctionSpecialization.cpp | |
parent | b05d436ec65e5e57a4e617211433ee0523792953 (diff) | |
download | llvm-e15d72adac66790a78a51a3087b56b2bde6b778a.zip llvm-e15d72adac66790a78a51a3087b56b2bde6b778a.tar.gz llvm-e15d72adac66790a78a51a3087b56b2bde6b778a.tar.bz2 |
[FuncSpec] Adjust the names of specializations and promoted stack values
Currently the naming scheme is a bit funky; the specializations are named
after the original function followed by an arbitrary decimal number. This
makes it hard to debug inlined specializations of recursive functions.
With this patch I am adding ".specialized." in between of the original
name and the suffix, which is now a single increment counter.
Diffstat (limited to 'llvm/lib/Transforms/IPO/FunctionSpecialization.cpp')
-rw-r--r-- | llvm/lib/Transforms/IPO/FunctionSpecialization.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp b/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp index 2c1f5f6..aa63e2b 100644 --- a/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp +++ b/llvm/lib/Transforms/IPO/FunctionSpecialization.cpp @@ -487,7 +487,7 @@ void FunctionSpecializer::promoteConstantStackValues(Function *F) { Value *GV = new GlobalVariable(M, ConstVal->getType(), true, GlobalValue::InternalLinkage, ConstVal, - "funcspec.arg"); + "specialized.arg." + Twine(++NGlobals)); if (ArgOpType != ConstVal->getType()) GV = ConstantExpr::getBitCast(cast<Constant>(GV), ArgOpType); @@ -719,9 +719,10 @@ void FunctionSpecializer::removeDeadFunctions() { /// Clone the function \p F and remove the ssa_copy intrinsics added by /// the SCCPSolver in the cloned version. -static Function *cloneCandidateFunction(Function *F) { +static Function *cloneCandidateFunction(Function *F, unsigned NSpecs) { ValueToValueMapTy Mappings; Function *Clone = CloneFunction(F, Mappings); + Clone->setName(F->getName() + ".specialized." + Twine(NSpecs)); removeSSACopy(*Clone); return Clone; } @@ -879,7 +880,7 @@ bool FunctionSpecializer::isCandidateFunction(Function *F) { Function *FunctionSpecializer::createSpecialization(Function *F, const SpecSig &S) { - Function *Clone = cloneCandidateFunction(F); + Function *Clone = cloneCandidateFunction(F, Specializations.size() + 1); // The original function does not neccessarily have internal linkage, but the // clone must. |