llvm-6502/test/CodeGen/Generic
Adrian Prantl 02474a32eb Move the complex address expression out of DIVariable and into an extra
argument of the llvm.dbg.declare/llvm.dbg.value intrinsics.

Previously, DIVariable was a variable-length field that has an optional
reference to a Metadata array consisting of a variable number of
complex address expressions. In the case of OpPiece expressions this is
wasting a lot of storage in IR, because when an aggregate type is, e.g.,
SROA'd into all of its n individual members, the IR will contain n copies
of the DIVariable, all alike, only differing in the complex address
reference at the end.

By making the complex address into an extra argument of the
dbg.value/dbg.declare intrinsics, all of the pieces can reference the
same variable and the complex address expressions can be uniqued across
the CU, too.
Down the road, this will allow us to move other flags, such as
"indirection" out of the DIVariable, too.

The new intrinsics look like this:
declare void @llvm.dbg.declare(metadata %storage, metadata %var, metadata %expr)
declare void @llvm.dbg.value(metadata %storage, i64 %offset, metadata %var, metadata %expr)

This patch adds a new LLVM-local tag to DIExpressions, so we can detect
and pretty-print DIExpression metadata nodes.

What this patch doesn't do:

This patch does not touch the "Indirect" field in DIVariable; but moving
that into the expression would be a natural next step.

http://reviews.llvm.org/D4919
rdar://problem/17994491

Thanks to dblaikie and dexonsmith for reviewing this patch!

Note: I accidentally committed a bogus older version of this patch previously.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218787 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-01 18:55:02 +00:00
..
2002-04-14-UnexpectedUnsignedType.ll
2002-04-16-StackFrameSizeAlignment.ll
2003-05-27-phifcmpd.ll
2003-05-27-useboolinotherbb.ll
2003-05-27-usefsubasbool.ll
2003-05-28-ManyArgs.ll
2003-05-30-BadFoldGEP.ll
2003-05-30-BadPreselectPhi.ll
2003-07-06-BadIntCmp.ll
2003-07-07-BadLongConst.ll
2003-07-08-BadCastToBool.ll
2003-07-29-BadConstSbyte.ll
2004-05-09-LiveVarPartialRegister.ll
2005-01-18-SetUO-InfLoop.ll
2005-04-09-GlobalInPHI.ll
2005-10-18-ZeroSizeStackObject.ll
2005-10-21-longlonggtu.ll
2005-12-01-Crash.ll
2005-12-12-ExpandSextInreg.ll
2006-01-12-BadSetCCFold.ll
2006-01-18-InvalidBranchOpcodeAssert.ll
2006-02-12-InsertLibcall.ll
2006-03-01-dagcombineinfloop.ll
2006-04-26-SetCCAnd.ll
2006-04-28-Sign-extend-bool.ll
2006-05-06-GEP-Cast-Sink-Crash.ll
2006-06-12-LowerSwitchCrash.ll
2006-06-13-ComputeMaskedBitsCrash.ll
2006-06-28-SimplifySetCCCrash.ll
2006-07-03-schedulers.ll
2006-08-30-CoalescerCrash.ll
2006-09-02-LocalAllocCrash.ll Don't run RAFast in the optimizing regalloc pipeline. 2012-06-08 23:15:12 +00:00
2006-09-06-SwitchLowering.ll
2006-10-27-CondFolding.ll
2006-10-29-Crash.ll
2006-11-20-DAGCombineCrash.ll
2007-01-15-LoadSelectCycle.ll
2007-02-25-invoke.ll Update to the new EH scheme. 2011-08-25 23:48:37 +00:00
2007-04-08-MultipleFrameIndices.ll Re-commit: Demote EmitRawText call in AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call 2014-02-13 14:44:26 +00:00
2007-04-13-SwitchLowerBadPhi.ll
2007-04-17-lsr-crash.ll
2007-04-27-InlineAsm-X-Dest.ll Re-commit: Demote EmitRawText call in AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call 2014-02-13 14:44:26 +00:00
2007-04-27-LargeMemObject.ll Re-commit: Demote EmitRawText call in AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call 2014-02-13 14:44:26 +00:00
2007-04-30-LandingPadBranchFolding.ll Update to the new EH scheme. 2011-08-25 23:48:37 +00:00
2007-05-03-EHTypeInfo.ll
2007-05-15-InfiniteRecursion.ll
2007-12-17-InvokeAsm.ll Re-commit: Demote EmitRawText call in AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call 2014-02-13 14:44:26 +00:00
2007-12-31-UnusedSelector.ll Remove all references to the old EH. 2012-01-31 02:09:07 +00:00
2008-01-25-dag-combine-mul.ll
2008-01-30-LoadCrash.ll
2008-02-04-Ctlz.ll Manually upgrade the test suite to specify the flag to cttz and ctlz. 2011-12-12 11:59:10 +00:00
2008-02-04-ExtractSubvector.ll
2008-02-20-MatchingMem.ll Re-commit: Demote EmitRawText call in AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call 2014-02-13 14:44:26 +00:00
2008-02-25-NegateZero.ll
2008-02-26-NegatableCrash.ll
2008-08-07-PtrToInt-SmallerInt.ll
2009-03-17-LSR-APInt.ll Use "weak alias" instead of "alias weak" 2014-07-30 22:51:54 +00:00
2009-03-29-SoftFloatVectorExtract.ll
2009-04-10-SinkCrash.ll
2009-04-28-i128-cmp-crash.ll
2009-11-16-BadKillsCrash.ll Remove all references to the old EH. 2012-01-31 02:09:07 +00:00
2010-07-27-DAGCombineCrash.ll Fix a crash in the dag combiner caused by ConstantFoldBIT_CONVERTofBUILD_VECTOR calling itself 2010-07-27 18:02:18 +00:00
2010-11-04-BigByval.ll PR11004: Inline memcpy to avoid generating nested call sequence. Un-XFAIL 2011-06-09-TailCallByVal and 2010-11-04-BigByval 2011-09-26 06:13:20 +00:00
2010-ZeroSizedArg.ll Remove arm_apcscc from the test files. It is the default and doing this 2010-06-17 15:18:27 +00:00
2011-01-06-BigNumberCrash.ll Add a testcase for PR8582, which mysteriously fixed itself, in case the problem 2011-01-06 23:04:29 +00:00
2011-07-07-ScheduleDAGCrash.ll XFAIL this test on arm until the backend is fixed. 2011-09-01 18:40:03 +00:00
2012-06-08-APIntCrash.ll Fix test case to work on ARM. 2012-06-11 16:01:14 +00:00
2013-03-20-APFloatCrash.ll Add a test case for PR15318 fixed in r177472 2013-03-20 06:18:06 +00:00
2014-02-05-OpaqueConstants.ll [DAG] Don't pull the binary operation though the shift if the operands have opaque constants. 2014-02-06 04:09:06 +00:00
add-with-overflow-24.ll
add-with-overflow-128.ll Fixes PR8823: add-with-overflow-128.ll 2010-12-23 03:15:51 +00:00
add-with-overflow.ll
addr-label.ll
annotate.ll Drop @llvm.annotation and @llvm.ptr.annotation intrinsics during codegen. 2013-05-21 14:37:16 +00:00
APIntLoadStore.ll Revert r158209, "test/CodeGen/Generic/APIntLoadStore.ll: Mark as XFAIL:ppc since r157911." 2012-06-21 13:43:06 +00:00
APIntParam.ll
APIntSextParam.ll
APIntZextParam.ll
asm-large-immediate.ll Re-commit: Demote EmitRawText call in AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call 2014-02-13 14:44:26 +00:00
assume.ll Add @llvm.assume, lowering, and some basic properties 2014-07-25 21:13:35 +00:00
badarg6.ll
badCallArgLRLLVM.ll
badFoldGEP.ll
BasicInstrs.ll
bool-to-double.ll
builtin-expect.ll Introduce "expect" intrinsic instructions. 2011-07-06 18:22:43 +00:00
call2-ret0.ll
call-ret0.ll
call-ret42.ll
call-void.ll
cast-fp.ll
ConstantExprLowering.ll
constindices.ll
crash.ll Change objectsize intrinsic to accept different address spaces. 2013-10-07 18:06:48 +00:00
dag-combine-crash.ll After reducing the size of an operation in the DAG we zero-extend the reduced 2012-12-19 07:39:08 +00:00
dbg_value.ll Move the complex address expression out of DIVariable and into an extra 2014-10-01 18:55:02 +00:00
div-neg-power-2.ll
donothing.ll Fix broken check lines. 2012-08-17 12:28:26 +00:00
edge-bundles-blockIDs.ll Don't run RAFast in the optimizing regalloc pipeline. 2012-06-08 23:15:12 +00:00
empty-insertvalue.ll Fix crash with an insertvalue that produces an empty object. 2014-09-20 00:10:47 +00:00
empty-load-store.ll
exception-handling.ll LSR wants to split the landing pad's critical edge. Let it do it, but use the 2011-08-25 05:55:40 +00:00
externally_available.ll
fastcall.ll
fneg-fabs.ll
fp_to_int.ll
fp-to-int-invalid.ll
fpowi-promote.ll
fwdtwice.ll
global-ret0.ll
hello.ll
i128-addsub.ll
i128-arith.ll
inline-asm-mem-clobber.ll Re-commit: Demote EmitRawText call in AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call 2014-02-13 14:44:26 +00:00
inline-asm-special-strings.ll Re-commit: Demote EmitRawText call in AsmPrinter::EmitInlineAsm() and remove hasRawTextSupport() call 2014-02-13 14:44:26 +00:00
intrinsics.ll
invalid-memcpy.ll rip out a ton of intrinsic modernization logic from AutoUpgrade.cpp, which is 2011-06-18 06:05:24 +00:00
isunord.ll
llvm-ct-intrinsics.ll Manually upgrade the test suite to specify the flag to cttz and ctlz. 2011-12-12 11:59:10 +00:00
MachineBranchProb.ll AArch64 & ARM: disable generic test that relies on no CFG changes. 2014-05-30 10:56:12 +00:00
Makefile
multiple-return-values-cross-block-with-invoke.ll XFAIL some of the generic CodeGen tests for Hexagon. 2013-03-25 21:04:16 +00:00
negintconst.ll
nested-select.ll
no-target.ll Fix pr18235. 2013-12-13 16:05:32 +00:00
overflow.ll add a general coverage test for overflow intrinsics. 2010-12-19 20:01:13 +00:00
PBQP.ll Add a regression test to sanity check the PBQP allocator. 2014-09-03 18:04:10 +00:00
pr2625.ll
pr3288.ll
pr12507.ll Don't try to zExt just to check if an integer constant is zero, it might 2012-04-10 00:16:22 +00:00
print-add.ll
print-after.ll CommandLine: Exit successfully for -version and -help 2014-02-28 19:08:01 +00:00
print-arith-fp.ll
print-arith-int.ll
print-int.ll
print-machineinstrs.ll Convert the uses of '|&' to use '2>&1 |' instead, which works on old 2012-07-02 18:37:59 +00:00
print-mul-exp.ll
print-mul.ll
print-shift.ll
ptr-annotate.ll Drop @llvm.annotation and @llvm.ptr.annotation intrinsics during codegen. 2013-05-21 14:37:16 +00:00
ret0.ll
ret42.ll
select-cc.ll XFAIL some of the generic CodeGen tests for Hexagon. 2013-03-25 21:04:16 +00:00
select.ll Convert a vselect into a concat_vector if possible 2014-05-30 23:03:11 +00:00
shift-int64.ll
stacksave-restore.ll
stop-after.ll Add a new attribute called 'jumptable' that creates jump-instruction tables for functions marked with this attribute. 2014-06-05 19:29:43 +00:00
storetrunc-fp.ll
switch-lower-feature.ll
switch-lower.ll
trap.ll
undef-phi.ll Enforce stricter liveness rules for PHIs. 2012-06-25 18:18:27 +00:00
v-split.ll
vector-casts.ll
vector-constantexpr.ll
vector-identity-shuffle.ll
vector.ll XFAIL some of the generic CodeGen tests for Hexagon. 2013-03-25 21:04:16 +00:00
zero-sized-array.ll Make codegen able to handle values of empty types. This is one way 2011-05-13 15:18:06 +00:00