Skip to content

Commit

Permalink
[DebugInfo] Enable the debug entry values feature by default
Browse files Browse the repository at this point in the history
This patch enables the debug entry values feature.

  - Remove the (CC1) experimental -femit-debug-entry-values option
  - Enable it for x86, arm and aarch64 targets
  - Resolve the test failures
  - Leave the llc experimental option for targets that do not
    support the CallSiteInfo yet

Differential Revision: https://reviews.llvm.org/D73534
  • Loading branch information
djtodoro committed Feb 12, 2020
1 parent c647705 commit 9f6ff07
Show file tree
Hide file tree
Showing 73 changed files with 234 additions and 101 deletions.
1 change: 0 additions & 1 deletion clang/include/clang/Basic/CodeGenOptions.def
Expand Up @@ -63,7 +63,6 @@ CODEGENOPT(ExperimentalNewPassManager, 1, 0) ///< Enables the new, experimental
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(IndirectTlsSegRefs, 1, 0) ///< Set when -mno-tls-direct-seg-refs
///< is specified.
CODEGENOPT(DisableTailCalls , 1, 0) ///< Do not emit tail calls.
Expand Down
2 changes: 0 additions & 2 deletions clang/include/clang/Driver/CC1Options.td
Expand Up @@ -390,8 +390,6 @@ def flto_visibility_public_std:
def flto_unit: Flag<["-"], "flto-unit">,
HelpText<"Emit IR to support LTO unit features (CFI, whole program vtable opt)">;
def fno_lto_unit: Flag<["-"], "fno-lto-unit">;
def femit_debug_entry_values : Flag<["-"], "femit-debug-entry-values">,
HelpText<"Enables debug info about call site parameter's entry values">;
def fdebug_pass_manager : Flag<["-"], "fdebug-pass-manager">,
HelpText<"Prints debug information for the new pass manager">;
def fno_debug_pass_manager : Flag<["-"], "fno-debug-pass-manager">,
Expand Down
1 change: 0 additions & 1 deletion clang/lib/CodeGen/BackendUtil.cpp
Expand Up @@ -481,7 +481,6 @@ static void initTargetOptions(llvm::TargetOptions &Options,
Options.DebuggerTuning = CodeGenOpts.getDebuggerTuning();
Options.EmitStackSizeSection = CodeGenOpts.StackSizeSection;
Options.EmitAddrsig = CodeGenOpts.Addrsig;
Options.EnableDebugEntryValues = CodeGenOpts.EnableDebugEntryValues;
Options.ForceDwarfFrameSection = CodeGenOpts.ForceDwarfFrameSection;

Options.MCOptions.SplitDwarfFile = CodeGenOpts.SplitDwarfFile;
Expand Down
3 changes: 1 addition & 2 deletions clang/lib/CodeGen/CGDebugInfo.cpp
Expand Up @@ -4861,8 +4861,7 @@ llvm::DINode::DIFlags CGDebugInfo::getCallSiteRelatedAttrs() const {
(CGM.getCodeGenOpts().getDebuggerTuning() == llvm::DebuggerKind::LLDB ||
CGM.getCodeGenOpts().getDebuggerTuning() == llvm::DebuggerKind::GDB);

if (!SupportsDWARFv4Ext && CGM.getCodeGenOpts().DwarfVersion < 5 &&
!CGM.getCodeGenOpts().EnableDebugEntryValues)
if (!SupportsDWARFv4Ext && CGM.getCodeGenOpts().DwarfVersion < 5)
return llvm::DINode::FlagZero;

return llvm::DINode::FlagAllCallsDescribed;
Expand Down
10 changes: 0 additions & 10 deletions clang/lib/Frontend/CompilerInvocation.cpp
Expand Up @@ -792,16 +792,6 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,

Opts.DisableLLVMPasses = Args.hasArg(OPT_disable_llvm_passes);
Opts.DisableLifetimeMarkers = Args.hasArg(OPT_disable_lifetimemarkers);

const llvm::Triple::ArchType DebugEntryValueArchs[] = {
llvm::Triple::x86, llvm::Triple::x86_64, llvm::Triple::aarch64,
llvm::Triple::arm, llvm::Triple::armeb};

llvm::Triple T(TargetOpts.Triple);
if (Opts.OptimizationLevel > 0 && Opts.hasReducedDebugInfo() &&
llvm::is_contained(DebugEntryValueArchs, T.getArch()))
Opts.EnableDebugEntryValues = Args.hasArg(OPT_femit_debug_entry_values);

Opts.DisableO0ImplyOptNone = Args.hasArg(OPT_disable_O0_optnone);
Opts.DisableRedZone = Args.hasArg(OPT_disable_red_zone);
Opts.IndirectTlsSegRefs = Args.hasArg(OPT_mno_tls_direct_seg_refs);
Expand Down
2 changes: 1 addition & 1 deletion clang/test/CodeGen/debug-info-extern-call.c
@@ -1,7 +1,7 @@
// When entry values are emitted, expect a subprogram for extern decls so that
// the dwarf generator can describe call site parameters at extern call sites.
//
// RUN: %clang -Xclang -femit-debug-entry-values -g -O2 -target x86_64-none-linux-gnu -S -emit-llvm %s -o - \
// RUN: %clang -g -O2 -target x86_64-none-linux-gnu -S -emit-llvm %s -o - \
// RUN: | FileCheck %s -check-prefix=DECLS-FOR-EXTERN

// Similarly, when the debugger tuning is gdb, expect a subprogram for extern
Expand Down
12 changes: 6 additions & 6 deletions clang/test/CodeGenCXX/dbg-info-all-calls-described.cpp
Expand Up @@ -15,22 +15,22 @@
// RUN: | FileCheck %s -check-prefix=HAS-ATTR \
// RUN: -implicit-check-not=DISubprogram -implicit-check-not=DIFlagAllCallsDescribed

// Supported: DWARF4 + GDB tuning by using '-femit-debug-entry-values'
// RUN: %clang_cc1 -femit-debug-entry-values -emit-llvm -triple x86_64-linux-gnu \
// Supported: DWARF4 + GDB tuning, -O1
// RUN: %clang_cc1 -emit-llvm -triple x86_64-linux-gnu \
// RUN: %s -o - -O1 -disable-llvm-passes -debugger-tuning=gdb \
// RUN: -debug-info-kind=standalone -dwarf-version=4 \
// RUN: | FileCheck %s -check-prefix=HAS-ATTR \
// RUN: -implicit-check-not=DIFlagAllCallsDescribed

// Supported: DWARF4 + LLDB tuning by using '-femit-debug-entry-values'
// RUN: %clang_cc1 -femit-debug-entry-values -emit-llvm -triple x86_64-linux-gnu \
// Supported: DWARF4 + LLDB tuning, -O1
// RUN: %clang_cc1 -emit-llvm -triple x86_64-linux-gnu \
// RUN: %s -o - -O1 -disable-llvm-passes -debugger-tuning=lldb \
// RUN: -debug-info-kind=standalone -dwarf-version=4 \
// RUN: | FileCheck %s -check-prefix=HAS-ATTR \
// RUN: -implicit-check-not=DIFlagAllCallsDescribed

// Unsupported: -O0 + '-femit-debug-entry-values'
// RUN: %clang_cc1 -femit-debug-entry-values -emit-llvm -triple x86_64-linux-gnu \
// Unsupported: -O0
// RUN: %clang_cc1 -emit-llvm -triple x86_64-linux-gnu \
// RUN: %s -o - -O0 -disable-llvm-passes -debugger-tuning=gdb \
// RUN: -debug-info-kind=standalone -dwarf-version=4 \
// RUN: | FileCheck %s -check-prefix=NO-ATTR
Expand Down
2 changes: 1 addition & 1 deletion lldb/packages/Python/lldbsuite/test/decorators.py
Expand Up @@ -694,7 +694,7 @@ def is_compiler_clang_with_call_site_info(self):

f = tempfile.NamedTemporaryFile()
cmd = "echo 'int main() {}' | " \
"%s -g -glldb -O1 -Xclang -femit-debug-entry-values -S -emit-llvm -x c -o %s -" % (compiler_path, f.name)
"%s -g -glldb -O1 -S -emit-llvm -x c -o %s -" % (compiler_path, f.name)
if os.popen(cmd).close() is not None:
return "Compiler can't compile with call site info enabled"

Expand Down
@@ -1,3 +1,3 @@
CXX_SOURCES := main.cpp
CXXFLAGS_EXTRAS := -O2 -glldb -Xclang -femit-debug-entry-values
CXXFLAGS_EXTRAS := -O2 -glldb
include Makefile.rules
2 changes: 1 addition & 1 deletion llvm/include/llvm/CodeGen/CommandFlags.inc
Expand Up @@ -277,7 +277,7 @@ static cl::opt<bool>

static cl::opt<bool>
EnableDebugEntryValues("debug-entry-values",
cl::desc("Emit debug info about parameter's entry values"),
cl::desc("Enable debug info for the debug entry values"),
cl::init(false));

static cl::opt<bool>
Expand Down
3 changes: 3 additions & 0 deletions llvm/include/llvm/Target/TargetMachine.h
Expand Up @@ -237,6 +237,9 @@ class TargetMachine {
void setSupportsDefaultOutlining(bool Enable) {
Options.SupportsDefaultOutlining = Enable;
}
void setSupportsDebugEntryValues(bool Enable) {
Options.SupportsDebugEntryValues = Enable;
}

bool shouldPrintMachineCode() const { return Options.PrintMachineCode; }

Expand Down
15 changes: 13 additions & 2 deletions llvm/include/llvm/Target/TargetOptions.h
Expand Up @@ -119,7 +119,8 @@ namespace llvm {
ExplicitEmulatedTLS(false), EnableIPRA(false),
EmitStackSizeSection(false), EnableMachineOutliner(false),
SupportsDefaultOutlining(false), EmitAddrsig(false),
EnableDebugEntryValues(false), ForceDwarfFrameSection(false) {}
SupportsDebugEntryValues(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
Expand Down Expand Up @@ -256,8 +257,18 @@ namespace llvm {
/// Emit address-significance table.
unsigned EmitAddrsig : 1;

/// Emit debug info about parameter's entry values.
/// Set if the target supports the debug entry values by default.
unsigned SupportsDebugEntryValues : 1;
/// When set to true, the EnableDebugEntryValues option forces production
/// of debug entry values even if the target does not officially support
/// it. Useful for testing purposes only. This flag should never be checked
/// directly, always use \ref ShouldEmitDebugEntryValues instead.
unsigned EnableDebugEntryValues : 1;
/// NOTE: There are targets that still do not support the call site info
/// production (the info about the arguments passed to the call, necessary
/// for the debug entry values), so we keep using the experimental option
/// (-debug-entry-values) to test them as well.
bool ShouldEmitDebugEntryValues() const;

/// Emit DWARF debug frame section.
unsigned ForceDwarfFrameSection : 1;
Expand Down
15 changes: 12 additions & 3 deletions llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
Expand Up @@ -95,6 +95,10 @@ static cl::opt<bool> UseDwarfRangesBaseAddressSpecifier(
"use-dwarf-ranges-base-address-specifier", cl::Hidden,
cl::desc("Use base address specifiers in debug_ranges"), cl::init(false));

static cl::opt<bool> EmitDwarfDebugEntryValues(
"emit-debug-entry-values", cl::Hidden,
cl::desc("Emit the debug entry values"), cl::init(false));

static cl::opt<bool> GenerateARangeSection("generate-arange-section",
cl::Hidden,
cl::desc("Generate dwarf aranges"),
Expand Down Expand Up @@ -419,6 +423,12 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
// a monolithic string offsets table without any header.
UseSegmentedStringOffsetsTable = DwarfVersion >= 5;

// Emit call-site-param debug info for GDB and LLDB, if the target supports
// the debug entry values feature. It can also be enabled explicitly.
EmitDebugEntryValues = (Asm->TM.Options.ShouldEmitDebugEntryValues() &&
(tuneForGDB() || tuneForLLDB())) ||
EmitDwarfDebugEntryValues;

Asm->OutStreamer->getContext().setDwarfVersion(DwarfVersion);
}

Expand Down Expand Up @@ -840,9 +850,8 @@ void DwarfDebug::constructCallSiteEntryDIEs(const DISubprogram &SP,
DIE &CallSiteDIE = CU.constructCallSiteEntryDIE(ScopeDIE, CalleeDIE,
IsTail, PCAddr, CallReg);

// GDB and LLDB support call site parameter debug info.
if (Asm->TM.Options.EnableDebugEntryValues &&
(tuneForGDB() || tuneForLLDB())) {
// Optionally emit call-site-param debug info.
if (emitDebugEntryValues()) {
ParamSet Params;
// Try to interpret values of call site parameters.
collectCallSiteParameters(&MI, Params);
Expand Down
9 changes: 9 additions & 0 deletions llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
Expand Up @@ -386,6 +386,11 @@ class DwarfDebug : public DebugHandlerBase {
/// a monolithic sequence of string offsets.
bool UseSegmentedStringOffsetsTable;

/// Enable production of call site parameters needed to print the debug entry
/// values. Useful for testing purposes when a debugger does not support the
/// feature yet.
bool EmitDebugEntryValues;

/// Separated Dwarf Variables
/// In general these will all be for bits that are left in the
/// original object file, rather than things that are meant
Expand Down Expand Up @@ -708,6 +713,10 @@ class DwarfDebug : public DebugHandlerBase {
return UseSegmentedStringOffsetsTable;
}

bool emitDebugEntryValues() const {
return EmitDebugEntryValues;
}

bool shareAcrossDWOCUs() const;

/// Returns the Dwarf Version.
Expand Down
4 changes: 2 additions & 2 deletions llvm/lib/CodeGen/LiveDebugValues.cpp
Expand Up @@ -960,7 +960,7 @@ void LiveDebugValues::transferRegisterDef(

if (auto *TPC = getAnalysisIfAvailable<TargetPassConfig>()) {
auto &TM = TPC->getTM<TargetMachine>();
if (TM.Options.EnableDebugEntryValues)
if (TM.Options.ShouldEmitDebugEntryValues())
emitEntryValues(MI, OpenRanges, VarLocIDs, Transfers, KillSet);
}
}
Expand Down Expand Up @@ -1460,7 +1460,7 @@ void LiveDebugValues::recordEntryValue(const MachineInstr &MI,
VarLocMap &VarLocIDs) {
if (auto *TPC = getAnalysisIfAvailable<TargetPassConfig>()) {
auto &TM = TPC->getTM<TargetMachine>();
if (!TM.Options.EnableDebugEntryValues)
if (!TM.Options.ShouldEmitDebugEntryValues())
return;
}

Expand Down
4 changes: 2 additions & 2 deletions llvm/lib/CodeGen/MIRParser/MIRParser.cpp
Expand Up @@ -381,11 +381,11 @@ bool MIRParserImpl::initializeCallSiteInfo(
CSInfo.emplace_back(Reg, ArgRegPair.ArgNo);
}

if (TM.Options.EnableDebugEntryValues)
if (TM.Options.ShouldEmitDebugEntryValues())
MF.addCallArgsForwardingRegs(&*CallI, std::move(CSInfo));
}

if (YamlMF.CallSitesInfo.size() && !TM.Options.EnableDebugEntryValues)
if (YamlMF.CallSitesInfo.size() && !TM.Options.ShouldEmitDebugEntryValues())
return error(Twine("Call site info provided but not used"));
return false;
}
Expand Down
3 changes: 1 addition & 2 deletions llvm/lib/CodeGen/MachineFunction.cpp
Expand Up @@ -865,8 +865,7 @@ MachineFunction::CallSiteInfoMap::iterator
MachineFunction::getCallSiteInfo(const MachineInstr *MI) {
assert(MI->isCandidateForCallSiteEntry() &&
"Call site info refers only to call (MI) candidates");

if (!Target.Options.EnableDebugEntryValues)
if (!Target.Options.ShouldEmitDebugEntryValues())
return CallSitesInfo.end();
return CallSitesInfo.find(MI);
}
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
Expand Up @@ -867,7 +867,7 @@ EmitSchedule(MachineBasicBlock::iterator &InsertPos) {
}

if (MI->isCandidateForCallSiteEntry() &&
DAG->getTarget().Options.EnableDebugEntryValues)
DAG->getTarget().Options.SupportsDebugEntryValues)
MF.addCallArgsForwardingRegs(MI, DAG->getSDCallSiteInfo(Node));

return MI;
Expand Down
8 changes: 8 additions & 0 deletions llvm/lib/CodeGen/TargetOptionsImpl.cpp
Expand Up @@ -45,3 +45,11 @@ bool TargetOptions::DisableFramePointerElim(const MachineFunction &MF) const {
bool TargetOptions::HonorSignDependentRoundingFPMath() const {
return !UnsafeFPMath && HonorSignDependentRoundingFPMathOption;
}

/// NOTE: There are targets that still do not support the call site info
/// production (the info about the arguments passed to the call, necessary
/// for the debug entry values), so we keep using the experimental option
/// (-debug-entry-values) to test them as well.
bool TargetOptions::ShouldEmitDebugEntryValues() const {
return SupportsDebugEntryValues || EnableDebugEntryValues;
}
2 changes: 1 addition & 1 deletion llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
Expand Up @@ -4169,7 +4169,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.SupportsDebugEntryValues)
CSInfo.emplace_back(VA.getLocReg(), i);
}
} else {
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
Expand Up @@ -309,6 +309,9 @@ AArch64TargetMachine::AArch64TargetMachine(const Target &T, const Triple &TT,

// AArch64 supports default outlining behaviour.
setSupportsDefaultOutlining(true);

// AArch64 supports the debug entry values.
setSupportsDebugEntryValues(true);
}

AArch64TargetMachine::~AArch64TargetMachine() = default;
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/Target/ARM/ARMISelLowering.cpp
Expand Up @@ -2223,7 +2223,7 @@ ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
isThisReturn = true;
}
const TargetOptions &Options = DAG.getTarget().Options;
if (Options.EnableDebugEntryValues)
if (Options.SupportsDebugEntryValues)
CSInfo.emplace_back(VA.getLocReg(), i);
RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
} else if (isByVal) {
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/ARM/ARMTargetMachine.cpp
Expand Up @@ -243,6 +243,9 @@ ARMBaseTargetMachine::ARMBaseTargetMachine(const Target &T, const Triple &TT,
this->Options.NoTrapAfterNoreturn = true;
}

// ARM supports the debug entry values.
setSupportsDebugEntryValues(true);

initAsmInfo();
}

Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/Target/X86/X86ISelLowering.cpp
Expand Up @@ -4020,7 +4020,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.SupportsDebugEntryValues)
CSInfo.emplace_back(VA.getLocReg(), I);
if (isVarArg && IsWin64) {
// Win64 ABI requires argument XMM reg to be copied to the corresponding
Expand Down
3 changes: 3 additions & 0 deletions llvm/lib/Target/X86/X86TargetMachine.cpp
Expand Up @@ -232,6 +232,9 @@ X86TargetMachine::X86TargetMachine(const Target &T, const Triple &TT,

setMachineOutliner(true);

// x86 supports the debug entry values.
setSupportsDebugEntryValues(true);

initAsmInfo();
}

Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/ARM/smml.ll
Expand Up @@ -10,7 +10,7 @@

; Next test would previously trigger an assertion responsible for verification of
; call site info state.
; RUN: llc -stop-after=if-converter -debug-entry-values -mtriple=thumbv6t2-eabi %s -o -| FileCheck %s -check-prefix=CHECK-CALLSITE
; RUN: llc -stop-after=if-converter -mtriple=thumbv6t2-eabi %s -o -| FileCheck %s -check-prefix=CHECK-CALLSITE
; CHECK-CALLSITE: name: test_used_flags
; CHECK-CALLSITE: callSites:

Expand Down
2 changes: 2 additions & 0 deletions llvm/test/CodeGen/MIR/Hexagon/bundled-call-site-info.mir
@@ -1,3 +1,5 @@
# We do not support the call site info for the target now, so we use the experimental option (-debug-entry-values).

# RUN: llc -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
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/MIR/X86/call-site-info-error1.mir
@@ -1,4 +1,4 @@
# RUN: not llc -mtriple=x86_64-- -run-pass none -debug-entry-values %s -o - 2>&1 | FileCheck %s
# RUN: not llc -mtriple=x86_64-- -run-pass none %s -o - 2>&1 | FileCheck %s
# CHECK: baa call instruction block out of range. Unable to reference bb:1
--- |
define dso_local i32 @baa(i32 %a) local_unnamed_addr {
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/MIR/X86/call-site-info-error2.mir
@@ -1,4 +1,4 @@
# RUN: not llc -mtriple=x86_64-- -run-pass none -debug-entry-values %s -o - 2>&1 | FileCheck %s
# RUN: not llc -mtriple=x86_64-- -run-pass none %s -o - 2>&1 | FileCheck %s
# CHECK: baa call instruction offset out of range. Unable to reference instruction at bb: 0 at offset:1
--- |
define dso_local i32 @baa(i32 %a) local_unnamed_addr {
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/CodeGen/MIR/X86/call-site-info-error3.mir
@@ -1,4 +1,4 @@
# RUN: not llc -mtriple=x86_64-- -run-pass none -debug-entry-values %s -o - 2>&1 | FileCheck %s
# RUN: not llc -mtriple=x86_64-- -run-pass none %s -o - 2>&1 | FileCheck %s
# CHECK: baa call site info should reference call instruction. Instruction at bb:0 at offset:0 is not a call instruction
--- |
define dso_local i32 @baa(i32 %a) local_unnamed_addr {
Expand Down
4 changes: 2 additions & 2 deletions llvm/test/CodeGen/MIR/X86/call-site-info-error4.mir
@@ -1,5 +1,5 @@
# RUN: not llc -mtriple=x86_64-- -run-pass none %s -o - 2>&1 | FileCheck %s
# CHECK: Call site info provided but not used
# RUN: llc -mtriple=x86_64-- -run-pass none %s -o - 2>&1 | FileCheck %s
# CHECK-NOT: Call site info provided but not used
--- |
define dso_local i32 @baa(i32 %a) local_unnamed_addr {
entry:
Expand Down
4 changes: 2 additions & 2 deletions 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 %s -stop-before=finalize-isel -o %t.mir
; RUN: cat %t.mir | FileCheck %s
; CHECK: name: fn2
; CHECK: callSites:
Expand All @@ -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 %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:
Expand Down
2 changes: 1 addition & 1 deletion 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 -mtriple aarch64-linux-gnu %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);
Expand Down

0 comments on commit 9f6ff07

Please sign in to comment.