Revert "demangle function names in trace files (#87626)"
This reverts commit 0fa20c55b5.
Storing raw symbol names is generally preferred in profile files.
Demangling might lose information. Language frontends might use
demangling schemes not supported by LLVMDemangle
(https://github.com/llvm/llvm-project/issues/45901#issuecomment-2008686663).
In addition, calling `demangle` for each function has a significant
performance overhead (#102222).
I believe that even if we decide to provide a producer-side demangling,
it would not be on by default.
Pull Request: https://github.com/llvm/llvm-project/pull/102274
(cherry picked from commit 72b73e23b6c36537db730ebea00f92798108a6e5)
This commit is contained in:
committed by
Tobias Hieta
parent
39746ee004
commit
d893708ded
Executable → Regular
-11
@@ -19,10 +19,7 @@ def is_before(range1, range2):
|
||||
|
||||
log_contents = json.loads(sys.stdin.read())
|
||||
events = log_contents["traceEvents"]
|
||||
|
||||
instants = [event for event in events if event["name"] == "InstantiateFunction"]
|
||||
codegens = [event for event in events if event["name"] == "CodeGen Function"]
|
||||
opts = [event for event in events if event["name"] == "OptFunction"]
|
||||
frontends = [event for event in events if event["name"] == "Frontend"]
|
||||
backends = [event for event in events if event["name"] == "Backend"]
|
||||
|
||||
@@ -51,11 +48,3 @@ if not all(
|
||||
]
|
||||
):
|
||||
sys.exit("Not all Frontend section are before all Backend sections!")
|
||||
|
||||
# Check that entries for foo exist and are in a demangled form.
|
||||
if not any(e for e in instants if "foo<int>" in e["args"]["detail"]):
|
||||
sys.exit("Missing Instantiate entry for foo!")
|
||||
if not any(e for e in codegens if "foo<int>" in e["args"]["detail"]):
|
||||
sys.exit("Missing CodeGen entry for foo!")
|
||||
if not any(e for e in opts if "foo<int>" in e["args"]["detail"]):
|
||||
sys.exit("Missing Optimize entry for foo!")
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
|
||||
#include "llvm/IR/LegacyPassManager.h"
|
||||
#include "llvm/ADT/MapVector.h"
|
||||
#include "llvm/Demangle/Demangle.h"
|
||||
#include "llvm/IR/DiagnosticInfo.h"
|
||||
#include "llvm/IR/IRPrintingPasses.h"
|
||||
#include "llvm/IR/LLVMContext.h"
|
||||
@@ -1416,8 +1415,7 @@ bool FPPassManager::runOnFunction(Function &F) {
|
||||
|
||||
// Store name outside of loop to avoid redundant calls.
|
||||
const StringRef Name = F.getName();
|
||||
llvm::TimeTraceScope FunctionScope(
|
||||
"OptFunction", [&F]() { return demangle(F.getName().str()); });
|
||||
llvm::TimeTraceScope FunctionScope("OptFunction", Name);
|
||||
|
||||
for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
|
||||
FunctionPass *FP = getContainedPass(Index);
|
||||
|
||||
@@ -21,7 +21,6 @@ add_llvm_component_library(LLVMPasses
|
||||
CodeGen
|
||||
Core
|
||||
Coroutines
|
||||
Demangle
|
||||
HipStdPar
|
||||
IPO
|
||||
InstCombine
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/CodeGen/MachineModuleInfo.h"
|
||||
#include "llvm/CodeGen/MachineVerifier.h"
|
||||
#include "llvm/Demangle/Demangle.h"
|
||||
#include "llvm/IR/Constants.h"
|
||||
#include "llvm/IR/Function.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
@@ -236,12 +235,12 @@ void printIR(raw_ostream &OS, const MachineFunction *MF) {
|
||||
MF->print(OS);
|
||||
}
|
||||
|
||||
std::string getIRName(Any IR, bool demangled = false) {
|
||||
std::string getIRName(Any IR) {
|
||||
if (unwrapIR<Module>(IR))
|
||||
return "[module]";
|
||||
|
||||
if (const auto *F = unwrapIR<Function>(IR))
|
||||
return demangled ? demangle(F->getName()) : F->getName().str();
|
||||
return F->getName().str();
|
||||
|
||||
if (const auto *C = unwrapIR<LazyCallGraph::SCC>(IR))
|
||||
return C->getName();
|
||||
@@ -251,7 +250,7 @@ std::string getIRName(Any IR, bool demangled = false) {
|
||||
L->getHeader()->getParent()->getName().str();
|
||||
|
||||
if (const auto *MF = unwrapIR<MachineFunction>(IR))
|
||||
return demangled ? demangle(MF->getName()) : MF->getName().str();
|
||||
return MF->getName().str();
|
||||
|
||||
llvm_unreachable("Unknown wrapped IR type");
|
||||
}
|
||||
@@ -1589,7 +1588,7 @@ void TimeProfilingPassesHandler::registerCallbacks(
|
||||
}
|
||||
|
||||
void TimeProfilingPassesHandler::runBeforePass(StringRef PassID, Any IR) {
|
||||
timeTraceProfilerBegin(PassID, getIRName(IR, true));
|
||||
timeTraceProfilerBegin(PassID, getIRName(IR));
|
||||
}
|
||||
|
||||
void TimeProfilingPassesHandler::runAfterPass() { timeTraceProfilerEnd(); }
|
||||
|
||||
@@ -2653,7 +2653,6 @@ cc_library(
|
||||
":CodeGen",
|
||||
":Core",
|
||||
":Coroutines",
|
||||
":Demangle",
|
||||
":HipStdPar",
|
||||
":IPO",
|
||||
":IRPrinter",
|
||||
|
||||
Reference in New Issue
Block a user