mirror of
git://git.yoctoproject.org/meta-intel.git
synced 2025-07-19 21:09:03 +02:00
llvm-project-source/10.0.1: backport fixes from LLVM 11
Include a fix and two supporting patches from LLVM 11 to fix problems with double registration while both clang-cpp and llvm lib are linked (like in case of opencl-clang). | CommandLine Error: Option 'mc-relax-all' registered more than once! | LLVM ERROR: inconsistency in registered CommandLine options Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
This commit is contained in:
parent
272e088902
commit
3b386a9dc8
|
@ -0,0 +1,550 @@
|
||||||
|
From 447cb2e1b2f0d8bdcfd8a0b39f47d28de50b5d82 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Djordje Todorovic <djordje.todorovic@syrmia.com>
|
||||||
|
Date: Mon, 9 Mar 2020 11:02:35 +0100
|
||||||
|
Subject: [PATCH] Enable the call site info only for -g + optimizations
|
||||||
|
|
||||||
|
Emit call site info only in the case of '-g' + 'O>0' level.
|
||||||
|
|
||||||
|
Differential Revision: https://reviews.llvm.org/D75175
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/c15c68abdc6f1afece637bdedba808676191a8e6]
|
||||||
|
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
|
||||||
|
---
|
||||||
|
clang/include/clang/Basic/CodeGenOptions.def | 2 ++
|
||||||
|
clang/lib/CodeGen/BackendUtil.cpp | 1 +
|
||||||
|
clang/lib/Frontend/CompilerInvocation.cpp | 4 +++-
|
||||||
|
llvm/include/llvm/CodeGen/CommandFlags.inc | 7 +++++++
|
||||||
|
llvm/include/llvm/Target/TargetOptions.h | 7 ++++++-
|
||||||
|
llvm/lib/CodeGen/MIRParser/MIRParser.cpp | 4 ++--
|
||||||
|
llvm/lib/CodeGen/MachineFunction.cpp | 2 +-
|
||||||
|
llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp | 2 +-
|
||||||
|
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp | 2 +-
|
||||||
|
llvm/lib/Target/ARM/ARMISelLowering.cpp | 2 +-
|
||||||
|
llvm/lib/Target/X86/X86ISelLowering.cpp | 2 +-
|
||||||
|
llvm/test/CodeGen/MIR/Hexagon/bundled-call-site-info.mir | 2 +-
|
||||||
|
llvm/test/CodeGen/X86/call-site-info-output.ll | 4 ++--
|
||||||
|
llvm/test/DebugInfo/AArch64/call-site-info-output.ll | 2 +-
|
||||||
|
llvm/test/DebugInfo/ARM/call-site-info-output.ll | 2 +-
|
||||||
|
.../MIR/AArch64/dbgcall-site-interpret-movzxi.mir | 2 +-
|
||||||
|
.../DebugInfo/MIR/AArch64/dbgcall-site-interpretation.mir | 2 +-
|
||||||
|
llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir | 2 +-
|
||||||
|
.../test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir | 2 +-
|
||||||
|
.../test/DebugInfo/MIR/ARM/dbgcall-site-interpretation.mir | 2 +-
|
||||||
|
.../DebugInfo/MIR/ARM/dbgcall-site-propagated-value.mir | 2 +-
|
||||||
|
llvm/test/DebugInfo/MIR/ARM/if-coverter-call-site-info.mir | 2 +-
|
||||||
|
.../MIR/Hexagon/dbgcall-site-instr-before-bundled-call.mir | 2 +-
|
||||||
|
.../MIR/Hexagon/live-debug-values-bundled-entry-values.mir | 2 +-
|
||||||
|
llvm/test/DebugInfo/MIR/SystemZ/call-site-lzer.mir | 2 +-
|
||||||
|
llvm/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir | 2 +-
|
||||||
|
llvm/test/DebugInfo/MIR/X86/dbg-call-site-spilled-arg.mir | 2 +-
|
||||||
|
.../test/DebugInfo/MIR/X86/dbgcall-site-copy-super-sub.mir | 2 +-
|
||||||
|
.../test/DebugInfo/MIR/X86/dbgcall-site-interpretation.mir | 2 +-
|
||||||
|
.../DebugInfo/MIR/X86/dbgcall-site-lea-interpretation.mir | 2 +-
|
||||||
|
llvm/test/DebugInfo/MIR/X86/dbgcall-site-reference.mir | 2 +-
|
||||||
|
.../DebugInfo/MIR/X86/dbgcall-site-two-fwd-reg-defs.mir | 2 +-
|
||||||
|
llvm/test/DebugInfo/MIR/X86/dbginfo-entryvals.mir | 2 +-
|
||||||
|
llvm/test/DebugInfo/MIR/X86/debug-call-site-param.mir | 4 ++--
|
||||||
|
.../DebugInfo/MIR/X86/entry-value-of-modified-param.mir | 2 +-
|
||||||
|
llvm/test/DebugInfo/MIR/X86/entry-values-diamond-bbs.mir | 2 +-
|
||||||
|
.../DebugInfo/MIR/X86/propagate-entry-value-cross-bbs.mir | 2 +-
|
||||||
|
.../test/DebugInfo/MIR/X86/unreachable-block-call-site.mir | 2 +-
|
||||||
|
llvm/test/DebugInfo/X86/dbgcall-site-64-bit-imms.ll | 2 +-
|
||||||
|
llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll | 2 +-
|
||||||
|
.../tools/llvm-dwarfdump/X86/stats-dbg-callsite-info.ll | 2 +-
|
||||||
|
41 files changed, 58 insertions(+), 41 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def
|
||||||
|
index 1ecae98b13b1..6a6a9465273f 100644
|
||||||
|
--- a/clang/include/clang/Basic/CodeGenOptions.def
|
||||||
|
+++ b/clang/include/clang/Basic/CodeGenOptions.def
|
||||||
|
@@ -64,6 +64,8 @@ CODEGENOPT(DebugPassManager, 1, 0) ///< Prints debug information for the new
|
||||||
|
///< pass manager.
|
||||||
|
CODEGENOPT(DisableRedZone , 1, 0) ///< Set when -mno-red-zone is enabled.
|
||||||
|
CODEGENOPT(EnableDebugEntryValues, 1, 0) ///< Emit call site parameter dbg info
|
||||||
|
+CODEGENOPT(EmitCallSiteInfo, 1, 0) ///< Emit call site info only in the case of
|
||||||
|
+ ///< '-g' + 'O>0' level.
|
||||||
|
CODEGENOPT(IndirectTlsSegRefs, 1, 0) ///< Set when -mno-tls-direct-seg-refs
|
||||||
|
///< is specified.
|
||||||
|
CODEGENOPT(DisableTailCalls , 1, 0) ///< Do not emit tail calls.
|
||||||
|
diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
|
||||||
|
index db8fd4166d7a..db09f9b641fe 100644
|
||||||
|
--- a/clang/lib/CodeGen/BackendUtil.cpp
|
||||||
|
+++ b/clang/lib/CodeGen/BackendUtil.cpp
|
||||||
|
@@ -482,6 +482,7 @@ static void initTargetOptions(llvm::TargetOptions &Options,
|
||||||
|
Options.EmitAddrsig = CodeGenOpts.Addrsig;
|
||||||
|
Options.EnableDebugEntryValues = CodeGenOpts.EnableDebugEntryValues;
|
||||||
|
Options.ForceDwarfFrameSection = CodeGenOpts.ForceDwarfFrameSection;
|
||||||
|
+ Options.EmitCallSiteInfo = CodeGenOpts.EmitCallSiteInfo;
|
||||||
|
|
||||||
|
Options.MCOptions.SplitDwarfFile = CodeGenOpts.SplitDwarfFile;
|
||||||
|
Options.MCOptions.MCRelaxAll = CodeGenOpts.RelaxAll;
|
||||||
|
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
|
||||||
|
index 18fa06bf3c6d..2e73dcbdebe4 100644
|
||||||
|
--- a/clang/lib/Frontend/CompilerInvocation.cpp
|
||||||
|
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
|
||||||
|
@@ -789,8 +789,10 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
|
||||||
|
|
||||||
|
llvm::Triple T(TargetOpts.Triple);
|
||||||
|
if (Opts.OptimizationLevel > 0 && Opts.hasReducedDebugInfo() &&
|
||||||
|
- llvm::is_contained(DebugEntryValueArchs, T.getArch()))
|
||||||
|
+ llvm::is_contained(DebugEntryValueArchs, T.getArch())) {
|
||||||
|
Opts.EnableDebugEntryValues = Args.hasArg(OPT_femit_debug_entry_values);
|
||||||
|
+ Opts.EmitCallSiteInfo = true;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
Opts.DisableO0ImplyOptNone = Args.hasArg(OPT_disable_O0_optnone);
|
||||||
|
Opts.DisableRedZone = Args.hasArg(OPT_disable_red_zone);
|
||||||
|
diff --git a/llvm/include/llvm/CodeGen/CommandFlags.inc b/llvm/include/llvm/CodeGen/CommandFlags.inc
|
||||||
|
index 6475a5b19edb..36073fe9cc98 100644
|
||||||
|
--- a/llvm/include/llvm/CodeGen/CommandFlags.inc
|
||||||
|
+++ b/llvm/include/llvm/CodeGen/CommandFlags.inc
|
||||||
|
@@ -286,6 +286,12 @@ static cl::opt<bool>
|
||||||
|
EnableAddrsig("addrsig", cl::desc("Emit an address-significance table"),
|
||||||
|
cl::init(false));
|
||||||
|
|
||||||
|
+static cl::opt<bool> EmitCallSiteInfo(
|
||||||
|
+ "emit-call-site-info",
|
||||||
|
+ cl::desc(
|
||||||
|
+ "Emit call site debug information, if debug information is enabled."),
|
||||||
|
+ cl::init(false));
|
||||||
|
+
|
||||||
|
static cl::opt<bool>
|
||||||
|
EnableDebugEntryValues("debug-entry-values",
|
||||||
|
cl::desc("Emit debug info about parameter's entry values"),
|
||||||
|
@@ -349,6 +355,7 @@ static TargetOptions InitTargetOptionsFromCodeGenFlags() {
|
||||||
|
Options.ExceptionModel = ExceptionModel;
|
||||||
|
Options.EmitStackSizeSection = EnableStackSizeSection;
|
||||||
|
Options.EmitAddrsig = EnableAddrsig;
|
||||||
|
+ Options.EmitCallSiteInfo = EmitCallSiteInfo;
|
||||||
|
Options.EnableDebugEntryValues = EnableDebugEntryValues;
|
||||||
|
Options.ForceDwarfFrameSection = ForceDwarfFrameSection;
|
||||||
|
|
||||||
|
diff --git a/llvm/include/llvm/Target/TargetOptions.h b/llvm/include/llvm/Target/TargetOptions.h
|
||||||
|
index d27c7b0178f0..9378e290bed1 100644
|
||||||
|
--- a/llvm/include/llvm/Target/TargetOptions.h
|
||||||
|
+++ b/llvm/include/llvm/Target/TargetOptions.h
|
||||||
|
@@ -134,7 +134,8 @@ namespace llvm {
|
||||||
|
EmulatedTLS(false), ExplicitEmulatedTLS(false), EnableIPRA(false),
|
||||||
|
EmitStackSizeSection(false), EnableMachineOutliner(false),
|
||||||
|
SupportsDefaultOutlining(false), EmitAddrsig(false),
|
||||||
|
- EnableDebugEntryValues(false), ForceDwarfFrameSection(false) {}
|
||||||
|
+ EmitCallSiteInfo(false), EnableDebugEntryValues(false),
|
||||||
|
+ ForceDwarfFrameSection(false) {}
|
||||||
|
|
||||||
|
/// PrintMachineCode - This flag is enabled when the -print-machineinstrs
|
||||||
|
/// option is specified on the command line, and should enable debugging
|
||||||
|
@@ -281,6 +282,10 @@ namespace llvm {
|
||||||
|
/// to selectively generate basic block sections.
|
||||||
|
std::shared_ptr<MemoryBuffer> BBSectionsFuncListBuf;
|
||||||
|
|
||||||
|
+ /// The flag enables call site info production. It is used only for debug
|
||||||
|
+ /// info, and it is restricted only to optimized code. This can be used for
|
||||||
|
+ /// something else, so that should be controlled in the frontend.
|
||||||
|
+ unsigned EmitCallSiteInfo : 1;
|
||||||
|
/// Emit debug info about parameter's entry values.
|
||||||
|
unsigned EnableDebugEntryValues : 1;
|
||||||
|
|
||||||
|
diff --git a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp
|
||||||
|
index 10157c746b46..f955bdc6186a 100644
|
||||||
|
--- a/llvm/lib/CodeGen/MIRParser/MIRParser.cpp
|
||||||
|
+++ b/llvm/lib/CodeGen/MIRParser/MIRParser.cpp
|
||||||
|
@@ -381,11 +381,11 @@ bool MIRParserImpl::initializeCallSiteInfo(
|
||||||
|
CSInfo.emplace_back(Reg, ArgRegPair.ArgNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (TM.Options.EnableDebugEntryValues)
|
||||||
|
+ if (TM.Options.EmitCallSiteInfo)
|
||||||
|
MF.addCallArgsForwardingRegs(&*CallI, std::move(CSInfo));
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (YamlMF.CallSitesInfo.size() && !TM.Options.EnableDebugEntryValues)
|
||||||
|
+ if (YamlMF.CallSitesInfo.size() && !TM.Options.EmitCallSiteInfo)
|
||||||
|
return error(Twine("Call site info provided but not used"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp
|
||||||
|
index 4612690644fe..c3795b7ed314 100644
|
||||||
|
--- a/llvm/lib/CodeGen/MachineFunction.cpp
|
||||||
|
+++ b/llvm/lib/CodeGen/MachineFunction.cpp
|
||||||
|
@@ -855,7 +855,7 @@ MachineFunction::CallSiteInfoMap::iterator
|
||||||
|
MachineFunction::getCallSiteInfo(const MachineInstr *MI) {
|
||||||
|
assert(MI->isCall() && "Call site info refers only to call instructions!");
|
||||||
|
|
||||||
|
- if (!Target.Options.EnableDebugEntryValues)
|
||||||
|
+ if (!Target.Options.EmitCallSiteInfo)
|
||||||
|
return CallSitesInfo.end();
|
||||||
|
return CallSitesInfo.find(MI);
|
||||||
|
}
|
||||||
|
diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
|
||||||
|
index 0e4d783e3505..52099f24aca5 100644
|
||||||
|
--- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
|
||||||
|
+++ b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
|
||||||
|
@@ -863,7 +863,7 @@ EmitSchedule(MachineBasicBlock::iterator &InsertPos) {
|
||||||
|
MI = &*std::next(Before);
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (MI->isCall() && DAG->getTarget().Options.EnableDebugEntryValues)
|
||||||
|
+ if (MI->isCall() && DAG->getTarget().Options.EmitCallSiteInfo)
|
||||||
|
MF.addCallArgsForwardingRegs(MI, DAG->getSDCallSiteInfo(Node));
|
||||||
|
|
||||||
|
return MI;
|
||||||
|
diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
|
||||||
|
index 23f05eaad944..63ff3031a5e8 100644
|
||||||
|
--- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
|
||||||
|
+++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
|
||||||
|
@@ -4132,7 +4132,7 @@ AArch64TargetLowering::LowerCall(CallLoweringInfo &CLI,
|
||||||
|
RegsToPass.emplace_back(VA.getLocReg(), Arg);
|
||||||
|
RegsUsed.insert(VA.getLocReg());
|
||||||
|
const TargetOptions &Options = DAG.getTarget().Options;
|
||||||
|
- if (Options.EnableDebugEntryValues)
|
||||||
|
+ if (Options.EmitCallSiteInfo)
|
||||||
|
CSInfo.emplace_back(VA.getLocReg(), i);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
|
||||||
|
index 9f504b1eaa42..5589ba34a2ac 100644
|
||||||
|
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
|
||||||
|
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
|
||||||
|
@@ -2222,7 +2222,7 @@ ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||||
|
isThisReturn = true;
|
||||||
|
}
|
||||||
|
const TargetOptions &Options = DAG.getTarget().Options;
|
||||||
|
- if (Options.EnableDebugEntryValues)
|
||||||
|
+ if (Options.EmitCallSiteInfo)
|
||||||
|
CSInfo.emplace_back(VA.getLocReg(), i);
|
||||||
|
RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
|
||||||
|
} else if (isByVal) {
|
||||||
|
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
|
||||||
|
index d5de94aeb8a2..4808bdf6ddc2 100644
|
||||||
|
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
|
||||||
|
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
|
||||||
|
@@ -4030,7 +4030,7 @@ X86TargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
|
||||||
|
} else if (VA.isRegLoc()) {
|
||||||
|
RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
|
||||||
|
const TargetOptions &Options = DAG.getTarget().Options;
|
||||||
|
- if (Options.EnableDebugEntryValues)
|
||||||
|
+ if (Options.EmitCallSiteInfo)
|
||||||
|
CSInfo.emplace_back(VA.getLocReg(), I);
|
||||||
|
if (isVarArg && IsWin64) {
|
||||||
|
// Win64 ABI requires argument XMM reg to be copied to the corresponding
|
||||||
|
diff --git a/llvm/test/CodeGen/MIR/Hexagon/bundled-call-site-info.mir b/llvm/test/CodeGen/MIR/Hexagon/bundled-call-site-info.mir
|
||||||
|
index 5ffa0293a2e1..fec542223fc9 100644
|
||||||
|
--- a/llvm/test/CodeGen/MIR/Hexagon/bundled-call-site-info.mir
|
||||||
|
+++ b/llvm/test/CodeGen/MIR/Hexagon/bundled-call-site-info.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -run-pass=none -verify-machineinstrs -o - %s | FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -run-pass=none -verify-machineinstrs -o - %s | FileCheck %s
|
||||||
|
|
||||||
|
# Verify that it is possible to read and write MIR where a callSites entry
|
||||||
|
# points to a call residing in a bundle. The offset should point to the call
|
||||||
|
diff --git a/llvm/test/CodeGen/X86/call-site-info-output.ll b/llvm/test/CodeGen/X86/call-site-info-output.ll
|
||||||
|
index 4b1e236aadfe..a0438f0c2b98 100644
|
||||||
|
--- a/llvm/test/CodeGen/X86/call-site-info-output.ll
|
||||||
|
+++ b/llvm/test/CodeGen/X86/call-site-info-output.ll
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
; Test call site info MIR printer and parser.Parser assertions and machine
|
||||||
|
; verifier will check the rest;
|
||||||
|
-; RUN: llc -debug-entry-values %s -stop-before=finalize-isel -o %t.mir
|
||||||
|
+; RUN: llc -emit-call-site-info -debug-entry-values %s -stop-before=finalize-isel -o %t.mir
|
||||||
|
; RUN: cat %t.mir | FileCheck %s
|
||||||
|
; CHECK: name: fn2
|
||||||
|
; CHECK: callSites:
|
||||||
|
@@ -10,7 +10,7 @@
|
||||||
|
; CHECK-NEXT: arg: 0, reg: '$edi'
|
||||||
|
; CHECK-NEXT: arg: 1, reg: '$esi'
|
||||||
|
; CHECK-NEXT: arg: 2, reg: '$edx'
|
||||||
|
-; RUN: llc -debug-entry-values %t.mir -run-pass=finalize-isel -o -| FileCheck %s --check-prefix=PARSER
|
||||||
|
+; RUN: llc -emit-call-site-info -debug-entry-values %t.mir -run-pass=finalize-isel -o -| FileCheck %s --check-prefix=PARSER
|
||||||
|
; Verify that we are able to parse output mir and that we are getting the same result.
|
||||||
|
; PARSER: name: fn2
|
||||||
|
; PARSER: callSites:
|
||||||
|
diff --git a/llvm/test/DebugInfo/AArch64/call-site-info-output.ll b/llvm/test/DebugInfo/AArch64/call-site-info-output.ll
|
||||||
|
index d52d6962f3c4..17d9f7f18762 100644
|
||||||
|
--- a/llvm/test/DebugInfo/AArch64/call-site-info-output.ll
|
||||||
|
+++ b/llvm/test/DebugInfo/AArch64/call-site-info-output.ll
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-; RUN: llc -mtriple aarch64-linux-gnu -debug-entry-values %s -o - -stop-before=finalize-isel | FileCheck %s
|
||||||
|
+; RUN: llc -emit-call-site-info -mtriple aarch64-linux-gnu -debug-entry-values %s -o - -stop-before=finalize-isel | FileCheck %s
|
||||||
|
; Verify that Selection DAG knows how to recognize simple function parameter forwarding registers.
|
||||||
|
; Produced from:
|
||||||
|
; extern int fn1(int,int,int);
|
||||||
|
diff --git a/llvm/test/DebugInfo/ARM/call-site-info-output.ll b/llvm/test/DebugInfo/ARM/call-site-info-output.ll
|
||||||
|
index 9255a7d57dde..ed726dfe753f 100644
|
||||||
|
--- a/llvm/test/DebugInfo/ARM/call-site-info-output.ll
|
||||||
|
+++ b/llvm/test/DebugInfo/ARM/call-site-info-output.ll
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-; RUN: llc -mtriple arm-linux-gnu -debug-entry-values %s -o - -stop-before=finalize-isel | FileCheck %s
|
||||||
|
+; RUN: llc -emit-call-site-info -mtriple arm-linux-gnu -debug-entry-values %s -o - -stop-before=finalize-isel | FileCheck %s
|
||||||
|
; Verify that Selection DAG knows how to recognize simple function parameter forwarding registers.
|
||||||
|
; Produced from:
|
||||||
|
; extern int fn1(int,int,int);
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-interpret-movzxi.mir b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-interpret-movzxi.mir
|
||||||
|
index dc7561ca6400..057779a90721 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-interpret-movzxi.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-interpret-movzxi.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -mtriple aarch64-linux-gnu -debug-entry-values -start-after=machineverifier -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -mtriple aarch64-linux-gnu -debug-entry-values -start-after=machineverifier -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
#
|
||||||
|
# Based on the following C reproducer:
|
||||||
|
#
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-interpretation.mir b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-interpretation.mir
|
||||||
|
index 0371ccef603e..d925bc395878 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-interpretation.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-interpretation.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -mtriple aarch64-linux-gnu -debug-entry-values -start-after=machineverifier -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -mtriple aarch64-linux-gnu -debug-entry-values -start-after=machineverifier -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
# Following code is used for producing this test case. Note that
|
||||||
|
# some of argument loading instruction are modified in order to
|
||||||
|
# cover certain cases.
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir
|
||||||
|
index 916a14022ba5..4a87dad3b9b5 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/AArch64/dbgcall-site-orr-moves.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -start-after=livedebugvalues -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -start-after=livedebugvalues -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
|
||||||
|
|
||||||
|
# Based on the following C reproducer:
|
||||||
|
#
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir b/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir
|
||||||
|
index fbf9b3454689..d85f2d25391d 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -start-after=livedebugvalues -filetype=obj -o - %s \
|
||||||
|
+# RUN: llc -emit-call-site-info -start-after=livedebugvalues -filetype=obj -o - %s \
|
||||||
|
# RUN: | llvm-dwarfdump -v - | FileCheck %s
|
||||||
|
|
||||||
|
# This tests for a crash in DwarfDebug's singular DBG_VALUE range promotion when
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-interpretation.mir b/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-interpretation.mir
|
||||||
|
index ce8dc97f0e72..0ae4e6ec485c 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-interpretation.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-interpretation.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -mtriple=arm-linux-gnueabi -debug-entry-values -filetype=obj -start-after=machineverifier %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -mtriple=arm-linux-gnueabi -debug-entry-values -filetype=obj -start-after=machineverifier %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
# Following code is used for producing this test case. Note that
|
||||||
|
# some of argument loading instruction are modified in order to
|
||||||
|
# cover certain cases.
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-propagated-value.mir b/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-propagated-value.mir
|
||||||
|
index 9001c8ba8eea..5b84d9e9627f 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-propagated-value.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/ARM/dbgcall-site-propagated-value.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -run-pass=livedebugvalues -o - %s | FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -run-pass=livedebugvalues -o - %s | FileCheck %s
|
||||||
|
|
||||||
|
# Based on the following C reproducer:
|
||||||
|
#
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/ARM/if-coverter-call-site-info.mir b/llvm/test/DebugInfo/MIR/ARM/if-coverter-call-site-info.mir
|
||||||
|
index aa7b54c1e5bb..11e9c4c90836 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/ARM/if-coverter-call-site-info.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/ARM/if-coverter-call-site-info.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -mtriple=arm-linux-gnu -debug-entry-values -run-pass if-converter %s -o -| FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -mtriple=arm-linux-gnu -debug-entry-values -run-pass if-converter %s -o -| FileCheck %s
|
||||||
|
|
||||||
|
# Vefify that the call site info will be updated after the optimization.
|
||||||
|
# This test case would previously trigger an assertion when
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/Hexagon/dbgcall-site-instr-before-bundled-call.mir b/llvm/test/DebugInfo/MIR/Hexagon/dbgcall-site-instr-before-bundled-call.mir
|
||||||
|
index 8ae628af2c09..3ae23d4189bf 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/Hexagon/dbgcall-site-instr-before-bundled-call.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/Hexagon/dbgcall-site-instr-before-bundled-call.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -mtriple hexagon -debug-entry-values -start-after=machineverifier -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
|
||||||
|
+# RUN: llc -mtriple hexagon -emit-call-site-info -debug-entry-values -start-after=machineverifier -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
|
||||||
|
|
||||||
|
# Based on the following C reproducer:
|
||||||
|
#
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/Hexagon/live-debug-values-bundled-entry-values.mir b/llvm/test/DebugInfo/MIR/Hexagon/live-debug-values-bundled-entry-values.mir
|
||||||
|
index ff0a539dd15d..8bb0b3202acd 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/Hexagon/live-debug-values-bundled-entry-values.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/Hexagon/live-debug-values-bundled-entry-values.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -run-pass=livedebugvalues -o - %s | FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -run-pass=livedebugvalues -o - %s | FileCheck %s
|
||||||
|
|
||||||
|
# Verify that the entry values for the input parameters are inserted after the
|
||||||
|
# bundles which contains the registers' clobbering instructions (the calls to
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/SystemZ/call-site-lzer.mir b/llvm/test/DebugInfo/MIR/SystemZ/call-site-lzer.mir
|
||||||
|
index 8a4e8b5632c2..3cf41467f7f9 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/SystemZ/call-site-lzer.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/SystemZ/call-site-lzer.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -start-after=livedebugvalues -o - %s | FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -start-after=livedebugvalues -o - %s | FileCheck %s
|
||||||
|
|
||||||
|
# This test would previously trigger an assertion when trying to describe the
|
||||||
|
# call site value for callee()'s float parameter.
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir b/llvm/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir
|
||||||
|
index e6fe5d2de878..4e5a07321d42 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/DW_OP_entry_value.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -start-before=livedebugvalues -mtriple=x86_64-apple-darwin -o %t %s -filetype=obj
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -start-before=livedebugvalues -mtriple=x86_64-apple-darwin -o %t %s -filetype=obj
|
||||||
|
# RUN: llvm-dwarfdump %t | FileCheck %s
|
||||||
|
#
|
||||||
|
# int global;
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/dbg-call-site-spilled-arg.mir b/llvm/test/DebugInfo/MIR/X86/dbg-call-site-spilled-arg.mir
|
||||||
|
index c32a1155d038..edeef2c7aed4 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/dbg-call-site-spilled-arg.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/dbg-call-site-spilled-arg.mir
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
# Check that llvm can describe a call site parameter which resides in a spill slot.
|
||||||
|
#
|
||||||
|
-# RUN: llc -debug-entry-values -start-after=machineverifier -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -start-after=machineverifier -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
|
||||||
|
#
|
||||||
|
# Command:
|
||||||
|
# $ ~/src/builds/llvm-project-master-RA/bin/clang -g -Xclang -femit-debug-entry-values -O2 -c -o spill.o spill.cc -mllvm -stop-before=machineverifier -o spill.mir
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-copy-super-sub.mir b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-copy-super-sub.mir
|
||||||
|
index a2d51a203512..01a2b887a60b 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-copy-super-sub.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-copy-super-sub.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -start-after=livedebugvalues -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -start-after=livedebugvalues -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
|
||||||
|
# Based on the following reproducer:
|
||||||
|
#
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-interpretation.mir b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-interpretation.mir
|
||||||
|
index f9e9459f1abd..104bc0146798 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-interpretation.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-interpretation.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -start-after=machineverifier -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -start-after=machineverifier -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
#
|
||||||
|
# CHECK: DW_TAG_GNU_call_site
|
||||||
|
# CHECK-NEXT: DW_AT_abstract_origin {{.*}} "foo"
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-lea-interpretation.mir b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-lea-interpretation.mir
|
||||||
|
index 1bb70f6d4530..4d88fa9aab74 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-lea-interpretation.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-lea-interpretation.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -start-after=machineverifier -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -start-after=machineverifier -filetype=obj %s -o -| llvm-dwarfdump -| FileCheck %s
|
||||||
|
# CHECK: DW_TAG_GNU_call_site
|
||||||
|
# CHECK-NEXT: DW_AT_abstract_origin {{.*}} "foo")
|
||||||
|
# CHECK-NEXT: DW_AT_low_pc {{.*}}
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reference.mir b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reference.mir
|
||||||
|
index 235787573f51..81af598ba194 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reference.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-reference.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -start-before=livedebugvalues -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -start-before=livedebugvalues -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
|
||||||
|
|
||||||
|
# Based on the following C++ code:
|
||||||
|
# struct A { A(A &) {} };
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-two-fwd-reg-defs.mir b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-two-fwd-reg-defs.mir
|
||||||
|
index db0934c595c3..46adedd1be44 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/dbgcall-site-two-fwd-reg-defs.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/dbgcall-site-two-fwd-reg-defs.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -O1 -debug-entry-values -start-after=livedebugvalues -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
|
||||||
|
+# RUN: llc -O1 -emit-call-site-info -debug-entry-values -start-after=livedebugvalues -filetype=obj %s -o - | llvm-dwarfdump - | FileCheck %s
|
||||||
|
|
||||||
|
# Based on the following C reproducer:
|
||||||
|
#
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/dbginfo-entryvals.mir b/llvm/test/DebugInfo/MIR/X86/dbginfo-entryvals.mir
|
||||||
|
index 5d203029936e..1d7b64f169d1 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/dbginfo-entryvals.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/dbginfo-entryvals.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
|
||||||
|
#
|
||||||
|
#extern void fn2(int);
|
||||||
|
#
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/debug-call-site-param.mir b/llvm/test/DebugInfo/MIR/X86/debug-call-site-param.mir
|
||||||
|
index e79be66cd4e3..c39bc4db50be 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/debug-call-site-param.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/debug-call-site-param.mir
|
||||||
|
@@ -2,8 +2,8 @@
|
||||||
|
# When the debugger tuning is set to gdb, use GNU opcodes.
|
||||||
|
# For lldb, use the standard DWARF5 opcodes.
|
||||||
|
|
||||||
|
-# RUN: llc -debug-entry-values -debugger-tune=gdb -filetype=obj -mtriple=x86_64-unknown-unknown -start-after=machineverifier -o - %s | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-GNU
|
||||||
|
-# RUN: llc -debug-entry-values -debugger-tune=lldb -filetype=obj -mtriple=x86_64-unknown-unknown -start-after=machineverifier -o - %s | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-DWARF5
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -debugger-tune=gdb -filetype=obj -mtriple=x86_64-unknown-unknown -start-after=machineverifier -o - %s | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-GNU
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -debugger-tune=lldb -filetype=obj -mtriple=x86_64-unknown-unknown -start-after=machineverifier -o - %s | llvm-dwarfdump - | FileCheck %s -check-prefixes=CHECK-DWARF5
|
||||||
|
#
|
||||||
|
# extern void foo(int *a, int b, int c, int d, int e, int f);
|
||||||
|
# extern int getVal();
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/entry-value-of-modified-param.mir b/llvm/test/DebugInfo/MIR/X86/entry-value-of-modified-param.mir
|
||||||
|
index 8d121c3a30b9..c7f15aaaa562 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/entry-value-of-modified-param.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/entry-value-of-modified-param.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
|
||||||
|
#
|
||||||
|
#extern void fn1 (int, int, int);
|
||||||
|
#
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/entry-values-diamond-bbs.mir b/llvm/test/DebugInfo/MIR/X86/entry-values-diamond-bbs.mir
|
||||||
|
index 2396daada876..aa8fdd7afd47 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/entry-values-diamond-bbs.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/entry-values-diamond-bbs.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
|
||||||
|
#
|
||||||
|
# The test case was artificially adjusted, in order to make proper diamond basic
|
||||||
|
# block structure relevant to the debug entry values propagation.
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/propagate-entry-value-cross-bbs.mir b/llvm/test/DebugInfo/MIR/X86/propagate-entry-value-cross-bbs.mir
|
||||||
|
index 86b1cddaa462..c5af863954bf 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/propagate-entry-value-cross-bbs.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/propagate-entry-value-cross-bbs.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -debug-entry-values -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
|
||||||
|
+# RUN: llc -emit-call-site-info -debug-entry-values -run-pass=livedebugvalues -march=x86-64 -o - %s | FileCheck %s
|
||||||
|
#
|
||||||
|
#extern void fn1 (int, int, int);
|
||||||
|
#__attribute__((noinline))
|
||||||
|
diff --git a/llvm/test/DebugInfo/MIR/X86/unreachable-block-call-site.mir b/llvm/test/DebugInfo/MIR/X86/unreachable-block-call-site.mir
|
||||||
|
index d282d796f6d7..ea9c12b5a192 100644
|
||||||
|
--- a/llvm/test/DebugInfo/MIR/X86/unreachable-block-call-site.mir
|
||||||
|
+++ b/llvm/test/DebugInfo/MIR/X86/unreachable-block-call-site.mir
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-# RUN: llc -mtriple=x86_64-pc-linux -debug-entry-values -run-pass=unreachable-mbb-elimination -o - %s | FileCheck %s
|
||||||
|
+# RUN: llc -mtriple=x86_64-pc-linux -emit-call-site-info -debug-entry-values -run-pass=unreachable-mbb-elimination -o - %s | FileCheck %s
|
||||||
|
|
||||||
|
# Verify that the call site information for the call residing in the eliminated
|
||||||
|
# block is removed. This test case would previously trigger an assertion when
|
||||||
|
diff --git a/llvm/test/DebugInfo/X86/dbgcall-site-64-bit-imms.ll b/llvm/test/DebugInfo/X86/dbgcall-site-64-bit-imms.ll
|
||||||
|
index b698f1cdbfe8..b8cd9574cc63 100644
|
||||||
|
--- a/llvm/test/DebugInfo/X86/dbgcall-site-64-bit-imms.ll
|
||||||
|
+++ b/llvm/test/DebugInfo/X86/dbgcall-site-64-bit-imms.ll
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-; RUN: llc -O1 -debug-entry-values -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
|
||||||
|
+; RUN: llc -O1 -emit-call-site-info -debug-entry-values -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
|
||||||
|
|
||||||
|
; Verify that the 64-bit call site immediates are not truncated.
|
||||||
|
;
|
||||||
|
diff --git a/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll b/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
|
||||||
|
index 9fe67f82a2b4..5d37774f55d6 100644
|
||||||
|
--- a/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
|
||||||
|
+++ b/llvm/test/DebugInfo/X86/dbgcall-site-zero-valued-imms.ll
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-; RUN: llc -O3 -debug-entry-values -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
|
||||||
|
+; RUN: llc -O3 -emit-call-site-info -debug-entry-values -filetype=obj -o - %s | llvm-dwarfdump - | FileCheck %s
|
||||||
|
|
||||||
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
|
target triple = "x86_64-unknown-linux-gnu"
|
||||||
|
diff --git a/llvm/test/tools/llvm-dwarfdump/X86/stats-dbg-callsite-info.ll b/llvm/test/tools/llvm-dwarfdump/X86/stats-dbg-callsite-info.ll
|
||||||
|
index c304e9d768a5..d126757398ff 100644
|
||||||
|
--- a/llvm/test/tools/llvm-dwarfdump/X86/stats-dbg-callsite-info.ll
|
||||||
|
+++ b/llvm/test/tools/llvm-dwarfdump/X86/stats-dbg-callsite-info.ll
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-; RUN: llc -debug-entry-values %s -o - -filetype=obj \
|
||||||
|
+; RUN: llc -emit-call-site-info -debug-entry-values %s -o - -filetype=obj \
|
||||||
|
; RUN: | llvm-dwarfdump -statistics - | FileCheck %s
|
||||||
|
;
|
||||||
|
; The LLVM IR file was generated on this source code by using
|
||||||
|
--
|
||||||
|
2.33.1
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,237 @@
|
||||||
|
From d51fdb9f2986747a56c593fa057d531720b39deb Mon Sep 17 00:00:00 2001
|
||||||
|
From: Sriraman Tallam <tmsriram@google.com>
|
||||||
|
Date: Fri, 13 Mar 2020 15:58:57 -0700
|
||||||
|
Subject: [PATCH] Basic Block Sections Support.
|
||||||
|
|
||||||
|
This is the first in a series of patches to enable Basic Block Sections
|
||||||
|
in LLVM.
|
||||||
|
|
||||||
|
We introduce a new compiler option, -fbasicblock-sections=, which places every
|
||||||
|
basic block in a unique ELF text section in the object file along with a
|
||||||
|
symbol labeling the basic block. The linker can then order the basic block
|
||||||
|
sections in any arbitrary sequence which when done correctly can encapsulate
|
||||||
|
block layout, function layout and function splitting optimizations. However,
|
||||||
|
there are a couple of challenges to be addressed for this to be feasible:
|
||||||
|
|
||||||
|
1) The compiler must not allow any implicit fall-through between any two
|
||||||
|
adjacent basic blocks as they could be reordered at link time to be
|
||||||
|
non-adjacent. In other words, the compiler must make a fall-through
|
||||||
|
between adjacent basic blocks explicit by retaining the direct jump
|
||||||
|
instruction that jumps to the next basic block. These branches can only
|
||||||
|
be removed later by the linker after the blocks have been reordered.
|
||||||
|
2) All inter-basic block branch targets would now need to be resolved by
|
||||||
|
the linker as they cannot be calculated during compile time. This is
|
||||||
|
done using static relocations which bloats the size of the object files.
|
||||||
|
Further, the compiler tries to use short branch instructions on some ISAs
|
||||||
|
for branch offsets that can be accommodated in one byte. This is not
|
||||||
|
possible with basic block sections as the offset is not determined at
|
||||||
|
compile time, and long branch instructions have to be used everywhere.
|
||||||
|
3) Each additional section bloats object file sizes by tens of bytes. The
|
||||||
|
number of basic blocks can be potentially very large compared to the
|
||||||
|
size of functions and can bloat object sizes significantly. Option
|
||||||
|
fbasicblock-sections= also takes a file path which can be used to
|
||||||
|
specify a subset of basic blocks that needs unique sections to keep
|
||||||
|
the bloats small.
|
||||||
|
4) Debug Info and CFI need special handling and will be presented as
|
||||||
|
separate patches.
|
||||||
|
|
||||||
|
Basic Block Labels
|
||||||
|
|
||||||
|
With -fbasicblock-sections=labels, or when a basic block is placed in a
|
||||||
|
unique section, it is labelled with a symbol. This allows easy mapping of
|
||||||
|
virtual addresses from PMU profiles back to the corresponding basic blocks.
|
||||||
|
Since the number of basic blocks is large, the labeling bloats the symbol
|
||||||
|
table sizes and the string table sizes significantly. While the binary size
|
||||||
|
does increase, it does not affect performance as the symbol table is not
|
||||||
|
loaded in memory during run-time. The string table size bloat is kept very
|
||||||
|
minimal using a unary naming scheme that uses string suffix compression.
|
||||||
|
The basic blocks for function foo are named "a.BB.foo", "aa.BB.foo", ...
|
||||||
|
This turns out to be very good for string table sizes and the bloat in the
|
||||||
|
string table size for a very large binary is ~8 %. The naming also allows
|
||||||
|
using the --symbol-ordering-file option in LLD to arbitrarily reorder the
|
||||||
|
sections.
|
||||||
|
|
||||||
|
Differential Revision: https://reviews.llvm.org/D68063
|
||||||
|
|
||||||
|
Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/4dfe92e46542be46d634a7ec24da2f2f889623d0]
|
||||||
|
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
|
||||||
|
---
|
||||||
|
llvm/include/llvm/CodeGen/CommandFlags.inc | 34 ++++++++++++++++++++++
|
||||||
|
llvm/include/llvm/Target/TargetMachine.h | 14 +++++++++
|
||||||
|
llvm/include/llvm/Target/TargetOptions.h | 31 ++++++++++++++++++--
|
||||||
|
3 files changed, 76 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/llvm/include/llvm/CodeGen/CommandFlags.inc b/llvm/include/llvm/CodeGen/CommandFlags.inc
|
||||||
|
index 8739b644873d..6475a5b19edb 100644
|
||||||
|
--- a/llvm/include/llvm/CodeGen/CommandFlags.inc
|
||||||
|
+++ b/llvm/include/llvm/CodeGen/CommandFlags.inc
|
||||||
|
@@ -238,6 +238,12 @@ static cl::opt<bool>
|
||||||
|
cl::desc("Emit functions into separate sections"),
|
||||||
|
cl::init(false));
|
||||||
|
|
||||||
|
+static cl::opt<std::string>
|
||||||
|
+ BBSections("basicblock-sections",
|
||||||
|
+ cl::desc("Emit basic blocks into separate sections"),
|
||||||
|
+ cl::value_desc("all | <function list (file)> | labels | none"),
|
||||||
|
+ cl::init("none"));
|
||||||
|
+
|
||||||
|
static cl::opt<unsigned> TLSSize("tls-size",
|
||||||
|
cl::desc("Bit size of immediate TLS offsets"),
|
||||||
|
cl::init(0));
|
||||||
|
@@ -251,6 +257,11 @@ static cl::opt<bool>
|
||||||
|
cl::desc("Give unique names to every section"),
|
||||||
|
cl::init(true));
|
||||||
|
|
||||||
|
+static cl::opt<bool> UniqueBBSectionNames(
|
||||||
|
+ "unique-bb-section-names",
|
||||||
|
+ cl::desc("Give unique names to every basic block section"),
|
||||||
|
+ cl::init(false));
|
||||||
|
+
|
||||||
|
static cl::opt<llvm::EABI>
|
||||||
|
EABIVersion("meabi", cl::desc("Set EABI type (default depends on triple):"),
|
||||||
|
cl::init(EABI::Default),
|
||||||
|
@@ -285,6 +296,27 @@ static cl::opt<bool>
|
||||||
|
cl::desc("Always emit a debug frame section."),
|
||||||
|
cl::init(false));
|
||||||
|
|
||||||
|
+static llvm::BasicBlockSection
|
||||||
|
+getBBSectionsMode(llvm::TargetOptions &Options) {
|
||||||
|
+ if (BBSections == "all")
|
||||||
|
+ return BasicBlockSection::All;
|
||||||
|
+ else if (BBSections == "labels")
|
||||||
|
+ return BasicBlockSection::Labels;
|
||||||
|
+ else if (BBSections == "none")
|
||||||
|
+ return BasicBlockSection::None;
|
||||||
|
+ else {
|
||||||
|
+ ErrorOr<std::unique_ptr<MemoryBuffer>> MBOrErr =
|
||||||
|
+ MemoryBuffer::getFile(BBSections);
|
||||||
|
+ if (!MBOrErr) {
|
||||||
|
+ errs() << "Error loading basic block sections function list file: "
|
||||||
|
+ << MBOrErr.getError().message() << "\n";
|
||||||
|
+ } else {
|
||||||
|
+ Options.BBSectionsFuncListBuf = std::move(*MBOrErr);
|
||||||
|
+ }
|
||||||
|
+ return BasicBlockSection::List;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
// Common utility function tightly tied to the options listed here. Initializes
|
||||||
|
// a TargetOptions object with CodeGen flags and returns it.
|
||||||
|
static TargetOptions InitTargetOptionsFromCodeGenFlags() {
|
||||||
|
@@ -308,7 +340,9 @@ static TargetOptions InitTargetOptionsFromCodeGenFlags() {
|
||||||
|
Options.RelaxELFRelocations = RelaxELFRelocations;
|
||||||
|
Options.DataSections = DataSections;
|
||||||
|
Options.FunctionSections = FunctionSections;
|
||||||
|
+ Options.BBSections = getBBSectionsMode(Options);
|
||||||
|
Options.UniqueSectionNames = UniqueSectionNames;
|
||||||
|
+ Options.UniqueBBSectionNames = UniqueBBSectionNames;
|
||||||
|
Options.TLSSize = TLSSize;
|
||||||
|
Options.EmulatedTLS = EmulatedTLS;
|
||||||
|
Options.ExplicitEmulatedTLS = EmulatedTLS.getNumOccurrences() > 0;
|
||||||
|
diff --git a/llvm/include/llvm/Target/TargetMachine.h b/llvm/include/llvm/Target/TargetMachine.h
|
||||||
|
index 176ae39b17a7..4a1f3377f31d 100644
|
||||||
|
--- a/llvm/include/llvm/Target/TargetMachine.h
|
||||||
|
+++ b/llvm/include/llvm/Target/TargetMachine.h
|
||||||
|
@@ -242,6 +242,9 @@ public:
|
||||||
|
|
||||||
|
bool getUniqueSectionNames() const { return Options.UniqueSectionNames; }
|
||||||
|
|
||||||
|
+ /// Return true if unique basic block section names must be generated.
|
||||||
|
+ bool getUniqueBBSectionNames() const { return Options.UniqueBBSectionNames; }
|
||||||
|
+
|
||||||
|
/// Return true if data objects should be emitted into their own section,
|
||||||
|
/// corresponds to -fdata-sections.
|
||||||
|
bool getDataSections() const {
|
||||||
|
@@ -254,6 +257,17 @@ public:
|
||||||
|
return Options.FunctionSections;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /// If basic blocks should be emitted into their own section,
|
||||||
|
+ /// corresponding to -fbasicblock-sections.
|
||||||
|
+ llvm::BasicBlockSection getBBSectionsType() const {
|
||||||
|
+ return Options.BBSections;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /// Get the list of functions and basic block ids that need unique sections.
|
||||||
|
+ const MemoryBuffer *getBBSectionsFuncListBuf() const {
|
||||||
|
+ return Options.BBSectionsFuncListBuf.get();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/// Get a \c TargetIRAnalysis appropriate for the target.
|
||||||
|
///
|
||||||
|
/// This is used to construct the new pass manager's target IR analysis pass,
|
||||||
|
diff --git a/llvm/include/llvm/Target/TargetOptions.h b/llvm/include/llvm/Target/TargetOptions.h
|
||||||
|
index 84c6ee2a6387..d27c7b0178f0 100644
|
||||||
|
--- a/llvm/include/llvm/Target/TargetOptions.h
|
||||||
|
+++ b/llvm/include/llvm/Target/TargetOptions.h
|
||||||
|
@@ -16,8 +16,11 @@
|
||||||
|
|
||||||
|
#include "llvm/MC/MCTargetOptions.h"
|
||||||
|
|
||||||
|
+#include <memory>
|
||||||
|
+
|
||||||
|
namespace llvm {
|
||||||
|
class MachineFunction;
|
||||||
|
+ class MemoryBuffer;
|
||||||
|
class Module;
|
||||||
|
|
||||||
|
namespace FloatABI {
|
||||||
|
@@ -63,6 +66,18 @@ namespace llvm {
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
+ enum class BasicBlockSection {
|
||||||
|
+ All, // Use Basic Block Sections for all basic blocks. A section
|
||||||
|
+ // for every basic block can significantly bloat object file sizes.
|
||||||
|
+ List, // Get list of functions & BBs from a file. Selectively enables
|
||||||
|
+ // basic block sections for a subset of basic blocks which can be
|
||||||
|
+ // used to control object size bloats from creating sections.
|
||||||
|
+ Labels, // Do not use Basic Block Sections but label basic blocks. This
|
||||||
|
+ // is useful when associating profile counts from virtual addresses
|
||||||
|
+ // to basic blocks.
|
||||||
|
+ None // Do not use Basic Block Sections.
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
enum class EABI {
|
||||||
|
Unknown,
|
||||||
|
Default, // Default means not specified
|
||||||
|
@@ -114,9 +129,9 @@ namespace llvm {
|
||||||
|
EnableFastISel(false), EnableGlobalISel(false), UseInitArray(false),
|
||||||
|
DisableIntegratedAS(false), RelaxELFRelocations(false),
|
||||||
|
FunctionSections(false), DataSections(false),
|
||||||
|
- UniqueSectionNames(true), TrapUnreachable(false),
|
||||||
|
- NoTrapAfterNoreturn(false), TLSSize(0), EmulatedTLS(false),
|
||||||
|
- ExplicitEmulatedTLS(false), EnableIPRA(false),
|
||||||
|
+ UniqueSectionNames(true), UniqueBBSectionNames(false),
|
||||||
|
+ TrapUnreachable(false), NoTrapAfterNoreturn(false), TLSSize(0),
|
||||||
|
+ EmulatedTLS(false), ExplicitEmulatedTLS(false), EnableIPRA(false),
|
||||||
|
EmitStackSizeSection(false), EnableMachineOutliner(false),
|
||||||
|
SupportsDefaultOutlining(false), EmitAddrsig(false),
|
||||||
|
EnableDebugEntryValues(false), ForceDwarfFrameSection(false) {}
|
||||||
|
@@ -224,6 +239,9 @@ namespace llvm {
|
||||||
|
|
||||||
|
unsigned UniqueSectionNames : 1;
|
||||||
|
|
||||||
|
+ /// Use unique names for basic block sections.
|
||||||
|
+ unsigned UniqueBBSectionNames : 1;
|
||||||
|
+
|
||||||
|
/// Emit target-specific trap instruction for 'unreachable' IR instructions.
|
||||||
|
unsigned TrapUnreachable : 1;
|
||||||
|
|
||||||
|
@@ -256,6 +274,13 @@ namespace llvm {
|
||||||
|
/// Emit address-significance table.
|
||||||
|
unsigned EmitAddrsig : 1;
|
||||||
|
|
||||||
|
+ /// Emit basic blocks into separate sections.
|
||||||
|
+ BasicBlockSection BBSections = BasicBlockSection::None;
|
||||||
|
+
|
||||||
|
+ /// Memory Buffer that contains information on sampled basic blocks and used
|
||||||
|
+ /// to selectively generate basic block sections.
|
||||||
|
+ std::shared_ptr<MemoryBuffer> BBSectionsFuncListBuf;
|
||||||
|
+
|
||||||
|
/// Emit debug info about parameter's entry values.
|
||||||
|
unsigned EnableDebugEntryValues : 1;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.33.1
|
||||||
|
|
|
@ -23,6 +23,9 @@ SRC_URI_LLVM10_PATCHES = " \
|
||||||
file://llvm10-0013-ispc-10_0_k_reg_mov_avx512_i8_i16.patch \
|
file://llvm10-0013-ispc-10_0_k_reg_mov_avx512_i8_i16.patch \
|
||||||
file://llvm10-0014-ispc-10_0_packed_load_store_avx512skx.patch \
|
file://llvm10-0014-ispc-10_0_packed_load_store_avx512skx.patch \
|
||||||
file://llvm10-0015-ispc-10_0_vXi1calling_avx512_i8_i16.patch \
|
file://llvm10-0015-ispc-10_0_vXi1calling_avx512_i8_i16.patch \
|
||||||
|
file://llvm10-basic-block-sections-support.patch \
|
||||||
|
file://llvm10-Enable-the-call-site-info-only-for-g-optimizations.patch \
|
||||||
|
file://llvm10-Replace-MCTargetOptionsCommandFlags.inc-and-CommandF.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI_LLVM12_PATCHES = " \
|
SRC_URI_LLVM12_PATCHES = " \
|
||||||
|
|
Loading…
Reference in New Issue
Block a user