llvm-project/llvm/test/CodeGen/Generic
Daniel Berlin 3c1432fecf Implement intrinsic mangling for literal struct types.
Fixes PR 31921

Summary:
Predicateinfo requires an ugly workaround to try to avoid literal
struct types due to the intrinsic mangling not being implemented.
This workaround actually does not work in all cases (you can hit the
assert by bootstrapping with -print-predicateinfo), and can't be made
to work without DFS'ing the type (IE copying getMangledStr and using a
version that detects if it would crash).

Rather than do that, i just implemented the mangling.  It seems
simple, since they are unified structurally.

Looking at the overloaded-mangling testcase we have, it actually turns
out the gc intrinsics will *also* crash if you try to use a literal
struct.  Thus, the testcase added fails before this patch, and works
after, without needing to resort to predicateinfo.

Reviewers: chandlerc, davide

Subscribers: llvm-commits, sanjoy

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

llvm-svn: 295253
2017-02-15 23:16:20 +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 [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2003-05-30-BadFoldGEP.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2003-05-30-BadPreselectPhi.ll
2003-07-06-BadIntCmp.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2003-07-07-BadLongConst.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2003-07-08-BadCastToBool.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2003-07-29-BadConstSbyte.ll [AVR] XFAIL a set of failing CodeGen tests 2017-02-08 10:24:18 +00:00
2004-05-09-LiveVarPartialRegister.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2005-01-18-SetUO-InfLoop.ll
2005-04-09-GlobalInPHI.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2005-10-18-ZeroSizeStackObject.ll
2005-10-21-longlonggtu.ll
2005-12-01-Crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2005-12-12-ExpandSextInreg.ll
2006-01-12-BadSetCCFold.ll
2006-01-18-InvalidBranchOpcodeAssert.ll
2006-02-12-InsertLibcall.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2006-03-01-dagcombineinfloop.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2006-04-26-SetCCAnd.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2006-04-28-Sign-extend-bool.ll
2006-05-06-GEP-Cast-Sink-Crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2006-06-12-LowerSwitchCrash.ll
2006-06-13-ComputeMaskedBitsCrash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2006-06-28-SimplifySetCCCrash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2006-07-03-schedulers.ll
2006-08-30-CoalescerCrash.ll
2006-09-02-LocalAllocCrash.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2006-09-06-SwitchLowering.ll
2006-10-27-CondFolding.ll
2006-10-29-Crash.ll
2006-11-20-DAGCombineCrash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2007-01-15-LoadSelectCycle.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2007-02-25-invoke.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2007-04-08-MultipleFrameIndices.ll [AVR] XFAIL a set of failing CodeGen tests 2017-02-08 10:24:18 +00:00
2007-04-13-SwitchLowerBadPhi.ll
2007-04-17-lsr-crash.ll
2007-04-27-InlineAsm-X-Dest.ll
2007-04-27-LargeMemObject.ll
2007-04-30-LandingPadBranchFolding.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2007-05-03-EHTypeInfo.ll CodeGen: @llvm.eh.typeid.for replaced @llvm.eh.typeid.for.i32 2015-03-16 21:36:38 +00:00
2007-05-15-InfiniteRecursion.ll
2007-12-17-InvokeAsm.ll [AVR] XFAIL a set of failing CodeGen tests 2017-02-08 10:24:18 +00:00
2007-12-31-UnusedSelector.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2008-01-25-dag-combine-mul.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2008-01-30-LoadCrash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2008-02-04-Ctlz.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2008-02-04-ExtractSubvector.ll
2008-02-20-MatchingMem.ll Unxfail passing test on Hexagon 2015-03-12 20:38:10 +00:00
2008-02-25-NegateZero.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2008-02-26-NegatableCrash.ll
2008-08-07-PtrToInt-SmallerInt.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
2009-03-17-LSR-APInt.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
2009-03-29-SoftFloatVectorExtract.ll Migrate existing backends that care about software floating point 2015-05-12 01:26:05 +00:00
2009-04-10-SinkCrash.ll
2009-04-28-i128-cmp-crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2009-11-16-BadKillsCrash.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
2010-07-27-DAGCombineCrash.ll
2010-11-04-BigByval.ll
2010-ZeroSizedArg.ll
2011-01-06-BigNumberCrash.ll
2011-07-07-ScheduleDAGCrash.ll [AVR] XFAIL a set of failing CodeGen tests 2017-02-08 10:24:18 +00:00
2012-06-08-APIntCrash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2013-03-20-APFloatCrash.ll
2014-02-05-OpaqueConstants.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
APIntLoadStore.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
APIntParam.ll
APIntSextParam.ll
APIntZextParam.ll
BasicInstrs.ll
ConstantExprLowering.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
ForceStackAlign.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
MachineBranchProb.ll [AVR] XFAIL a set of failing CodeGen tests 2017-02-08 10:24:18 +00:00
PBQP.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
add-with-overflow-24.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
add-with-overflow-128.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
add-with-overflow.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
addr-label.ll
annotate.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
asm-large-immediate.ll
assume.ll Add @llvm.assume, lowering, and some basic properties 2014-07-25 21:13:35 +00:00
badCallArgLRLLVM.ll
badFoldGEP.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
badarg6.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
bool-to-double.ll
builtin-expect.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
call-ret0.ll
call-ret42.ll
call-void.ll
call2-ret0.ll
cast-fp.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
cfi-sections.ll PR 31534: When emitting both DWARF unwind tables and debug information, 2017-01-05 20:55:28 +00:00
constindices.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
dag-combine-crash.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
dbg_value.ll DI: Require subprogram definitions to be distinct 2015-08-28 20:26:49 +00:00
div-neg-power-2.ll
donothing.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
dont-remove-empty-preheader.ll Add missing test for the "Don't delete empty preheaders" added in r265397 2016-04-05 14:21:32 +00:00
edge-bundles-blockIDs.ll
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 [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
empty-phi.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
exception-handling.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
externally_available.ll Revert "Do not verify dominator tree if it has no roots" 2017-01-25 17:15:48 +00:00
fastcall.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
fneg-fabs.ll
fp-to-int-invalid.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
fp_to_int.ll
fpowi-promote.ll
fwdtwice.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
global-ret0.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
hello.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
i128-addsub.ll
i128-arith.ll
icmp-illegal.ll Fix icmp lowering 2015-05-20 17:21:09 +00:00
inline-asm-mem-clobber.ll [AVR] XFAIL a set of failing CodeGen tests 2017-02-08 10:24:18 +00:00
inline-asm-special-strings.ll
intrinsics.ll Add -O0 support for @llvm.invariant.group.barrier by discarding it if it gets to ISel. 2016-11-07 16:47:20 +00:00
invalid-memcpy.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
isunord.ll
lit.local.cfg Make the default triple optional by allowing an empty string 2015-09-16 05:34:32 +00:00
llc-start-stop.ll llc: Add -start-before/-stop-before options 2016-09-23 21:46:02 +00:00
llvm-ct-intrinsics.ll
multiple-return-values-cross-block-with-invoke.ll Move the personality function from LandingPadInst to Function 2015-06-17 20:52:32 +00:00
negintconst.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
nested-select.ll
no-target.ll
overflow.ll
overloaded-intrinsic-name.ll Implement intrinsic mangling for literal struct types. 2017-02-15 23:16:20 +00:00
pr2625.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
pr3288.ll
pr12507.ll
print-add.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
print-after.ll
print-arith-fp.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
print-arith-int.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
print-int.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
print-machineinstrs.ll Rename argument strings of codegen passes to avoid collisions with command line 2014-12-13 04:52:04 +00:00
print-mul-exp.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
print-mul.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
print-shift.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
ptr-annotate.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
ret0.ll
ret42.ll
select-cc.ll [AVR] XFAIL a set of failing CodeGen tests 2017-02-08 10:24:18 +00:00
select.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
shift-int64.ll
stacksave-restore.ll
storetrunc-fp.ll
switch-lower-feature.ll
switch-lower.ll
trap.ll
undef-phi.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
v-split.ll [AVR] XFAIL a set of failing CodeGen tests 2017-02-08 10:24:18 +00:00
vector-casts.ll whitespace tidyup. NFC. 2015-07-03 08:02:12 +00:00
vector-constantexpr.ll
vector-identity-shuffle.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
vector-redux.ll [AVR] XFAIL a set of failing CodeGen tests 2017-02-08 10:24:18 +00:00
vector.ll [AVR] XFAIL a set of failing CodeGen tests 2017-02-08 10:24:18 +00:00
zero-sized-array.ll