llvm-project/llvm/test/Transforms/GlobalOpt
Shiva Chen 2c864551df [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label.
In order to set breakpoints on labels and list source code around
labels, we need collect debug information for labels, i.e., label
name, the function label belong, line number in the file, and the
address label located. In order to keep these information in LLVM
IR and to allow backend to generate debug information correctly.
We create a new kind of metadata for labels, DILabel. The format
of DILabel is

!DILabel(scope: !1, name: "foo", file: !2, line: 3)

We hope to keep debug information as much as possible even the
code is optimized. So, we create a new kind of intrinsic for label
metadata to avoid the metadata is eliminated with basic block.
The intrinsic will keep existing if we keep it from optimized out.
The format of the intrinsic is

llvm.dbg.label(metadata !1)

It has only one argument, that is the DILabel metadata. The
intrinsic will follow the label immediately. Backend could get the
label metadata through the intrinsic's parameter.

We also create DIBuilder API for labels to be used by Frontend.
Frontend could use createLabel() to allocate DILabel objects, and use
insertLabel() to insert llvm.dbg.label intrinsic in LLVM IR.

Differential Revision: https://reviews.llvm.org/D45024

Patch by Hsiangkai Wang.

llvm-svn: 331841
2018-05-09 02:40:45 +00:00
..
PowerPC Re-commit : [PowerPC] Add handling for ColdCC calling convention and a pass to mark 2018-01-30 16:17:22 +00:00
2004-10-10-CastStoreOnce.ll
2005-06-15-LocalizeConstExprCrash.ll
2005-09-27-Crash.ll
2006-07-07-InlineAsmCrash.ll
2006-11-01-ShrinkGlobalPhiCrash.ll
2007-04-05-Crash.ll
2007-05-13-Crash.ll Make "@name =" mandatory for globals in .ll files. 2016-05-10 18:22:45 +00:00
2007-06-04-PackedStruct.ll
2007-11-09-GEP-GEP-Crash.ll
2008-01-03-Crash.ll
2008-01-13-OutOfRangeSROA.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2008-01-29-VolatileGlobal.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2008-04-26-SROA-Global-Align.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2008-07-17-addrspace.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2008-12-16-HeapSRACrash-2.ll
2008-12-16-HeapSRACrash.ll
2009-01-13-phi-user.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2009-02-15-BitcastAlias.ll
2009-02-15-ResolveAlias.ll
2009-03-05-dbg.ll Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
2009-03-06-Anonymous.ll Make "@name =" mandatory for globals in .ll files. 2016-05-10 18:22:45 +00:00
2009-03-07-PromotePtrToBool.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
2009-06-01-RecursivePHI.ll
2009-11-16-BrokenPerformHeapAllocSRoA.ll
2009-11-16-MallocSingleStoreToGlobalVar.ll
2010-02-25-MallocPromote.ll
2010-02-26-MallocSROA.ll
2010-10-19-WeakOdr.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
2011-04-09-EmptyGlobalCtors.ll
2012-05-11-blockaddress.ll
GSROA-section.ll
MallocSROA-section.ll
SROA-section.ll
alias-resolve.ll
alias-used-address-space.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
alias-used-section.ll
alias-used.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
array-elem-refs.ll
assume.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
atexit.ll
atomic.ll
available_externally_global_ctors.ll
basictest.ll PM: Port GlobalOpt to the new pass manager 2016-04-26 00:28:01 +00:00
blockaddress.ll
cleanup-pointer-root-users.ll
coldcc_stress_test.ll Re-commit : [PowerPC] Add handling for ColdCC calling convention and a pass to mark 2018-01-30 16:17:22 +00:00
compiler-used.ll
constantexpr-dangle.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
constantfold-initializers.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
crash-2.ll
crash.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
ctor-list-opt-constexpr.ll
ctor-list-opt-inbounds.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
ctor-list-opt.ll
cxx-dtor.ll
deaddeclaration.ll [GlobalOpt] Dead Eliminate declarations 2016-09-15 20:26:27 +00:00
deadfunction.ll
deadglobal-2.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
deadglobal.ll
evaluate-bitcast.ll [Evaluator] Evaluate load/store with bitcast 2018-03-13 10:19:50 +00:00
externally-initialized-aggregate.ll Fix some broken CHECK lines. 2017-01-22 20:28:56 +00:00
externally-initialized-global-ctr.ll
externally-initialized.ll
fastcc.ll
global-demotion.ll
globalsra-partial.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
globalsra-unknown-index.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
globalsra.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
heap-sra-1.ll
heap-sra-2.ll
heap-sra-3.ll
heap-sra-4.ll
heap-sra-phi.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
int_sideeffect.ll Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
integer-bool-dwarf.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
integer-bool.ll
invariant-nodatalayout.ll Revert "Revert "Invariant start/end intrinsics overloaded for address space"" 2016-08-13 23:31:24 +00:00
invariant.group.barrier.ll Rename invariant.group.barrier to launder.invariant.group 2018-05-03 11:03:01 +00:00
invariant.ll Revert "Revert "Invariant start/end intrinsics overloaded for address space"" 2016-08-13 23:31:24 +00:00
invoke.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
iterate.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
load-store-global.ll
localize-constexpr-debuginfo.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
localize-constexpr.ll
malloc-promote-1.ll
malloc-promote-2.ll
malloc-promote-3.ll
memcpy.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
memset-null.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
memset.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
metadata.ll IR: Drop uniquing when an MDNode Value operand is deleted 2016-08-03 18:19:43 +00:00
musttail_cc.ll [GlobalOpt] don't change CC of musttail calle(e|r) 2018-02-28 22:28:44 +00:00
naked_functions.ll [FunctionAttrs][ArgumentPromotion][GlobalOpt] Disable some optimisations passes for naked functions 2018-02-22 14:42:08 +00:00
phi-select.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
pr21191.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
pr33686.ll [GlobalOpt] Autogenerate checks for the test in PR33686. 2017-07-13 15:55:34 +00:00
preserve-comdats.ll
shrink-address-to-bool.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
static-const-bitcast.ll [GlobalOpt] Fix support for casts in ctors. 2018-04-06 15:54:47 +00:00
storepointer-compare.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
storepointer.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
tls.ll
trivialstore.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
undef-init.ll GlobalOpt: Convert a bunch of tests from grep to FileCheck 2016-04-25 23:36:50 +00:00
unnamed-addr.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
zeroinitializer-gep-load.ll