llvm-project/llvm/test/Transforms
Hiroshi Inoue 99a8faa615 [SROA] fix assetion failure
This patch fixes the assertion failure in SROA reported in PR35657.
PR35657 reports the assertion failure due to r319522 (splitting for non-whole-alloca slices), but this problem can happen even without r319522.

The problem exists in a check for reusing an existing alloca when rewriting partitions. As the original comment said, we can reuse the existing alloca if the new alloca has the same type and offset with the existing one. But the code checks only type of the alloca and then check the offset using an assert.
In a corner case with out-of-bounds access (e.g. @PR35657 function added in unit test), it is possible that the two allocas have the same type but different offsets.

This patch makes the check of the offset in the if condition, and re-enables the splitting for non-whole-alloca slices.

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

llvm-svn: 322533
2018-01-16 06:23:05 +00:00
..
ADCE [ADCE][Dominators] Reapply: Teach ADCE to preserve dominators 2017-08-22 16:30:21 +00:00
AddDiscriminators
AlignmentFromAssumptions
ArgumentPromotion [Debugify] Handled unsized types 2018-01-06 00:37:01 +00:00
AtomicExpand
BDCE [BDCE] Don't check demanded bits on unsized types 2017-08-16 16:09:22 +00:00
BranchFolding
CallSiteSplitting [CallSiteSplitting] Remove isOrHeader restriction. 2017-12-23 20:02:26 +00:00
CalledValuePropagation Add CalledValuePropagation pass 2017-10-25 13:40:08 +00:00
CodeExtractor [CodeExtractor] Use subset of function attributes for extracted function. 2018-01-07 11:22:25 +00:00
CodeGenPrepare [CGP] Fix Complex addressing mode for offset 2018-01-09 04:37:06 +00:00
ConstProp [TargetLibraryInfo] fix finite mathlib function availability 2018-01-08 17:38:09 +00:00
ConstantHoisting Fix out-of-order stepping behavior in programs with hoisted constants. 2017-11-09 20:01:31 +00:00
ConstantMerge Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
Coroutines [coroutines] Add support for symmetric control transfer (musttail on coro.resumes followed by a suspend) 2017-08-25 02:25:10 +00:00
CorrelatedValuePropagation [CVP] Replace incoming values from unreachable blocks with undef. 2018-01-08 16:34:06 +00:00
CrossDSOCFI [cfi] Build __cfi_check as Thumb when applicable. 2017-08-29 22:29:15 +00:00
DCE Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
DeadArgElim Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
DeadStoreElimination Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
DivRemPairs [DivRemPairs] split tests per target to account for bots that don't build for all targets 2017-09-09 14:10:59 +00:00
EarlyCSE [EarlyCSE] Salvage debug info during DCE 2018-01-09 15:08:37 +00:00
EliminateAvailableExternally
EntryExitInstrumenter EntryExitInstrumenter: set DebugLocs on the inserted call instructions (PR35412) 2017-11-28 18:44:26 +00:00
ExpandMemCmp/X86 [x86, MemCmpExpansion] allow 2 pairs of loads per block (PR33325) 2018-01-06 16:16:04 +00:00
Float2Int
ForcedFunctionAttrs
FunctionAttrs Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
FunctionImport Make internal/private GVs implicitly dso_local. 2018-01-11 22:15:05 +00:00
GCOVProfiling Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
GVN [PRE] Add a bunch of test cases for LICM-like PRE patterns 2018-01-03 22:28:26 +00:00
GVNHoist [GVNHoist] Fix: PR35222 gvn-hoist incorrectly erases load in case of a loop 2018-01-04 07:47:24 +00:00
GVNSink Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
GlobalDCE
GlobalMerge Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
GlobalOpt Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
GlobalSplit
GuardWidening
IPConstantProp [IPSCCP] Remove calls without side effects 2018-01-09 21:58:46 +00:00
IRCE [IRCE][NFC] Make range check's End a non-null SCEV 2018-01-12 10:00:26 +00:00
IndVarSimplify [SCEV] Fix the movement of insertion point in expander. PR35406. 2017-12-15 05:24:42 +00:00
InferAddressSpaces InferAddressSpaces: Fix bug about replacing addrspacecast 2017-10-30 21:19:41 +00:00
InferFunctionAttrs Add argmononly attribute to strlen and wcslen, i.e. they only read memory (string) passed to them. 2017-06-18 03:10:26 +00:00
Inline Avoid inlining if there is byval arguments with non-alloca address space 2018-01-10 13:01:18 +00:00
InstCombine [InstCombine] Apply the fix from r322284 for sin / cos -> tan too 2018-01-11 15:33:21 +00:00
InstMerge
InstNamer
InstSimplify [InstSimplify] fold implied null ptr check (PR35790) 2018-01-13 15:44:44 +00:00
InterleavedAccess [X86][LLVM]Expanding Supports lowerInterleaved{store|load}() in X86InterleavedAccess (VF64 stride 3-4) 2017-10-02 07:35:25 +00:00
Internalize
JumpThreading [JumpThreading] Preservation of DT and LVI across the pass 2018-01-12 21:06:48 +00:00
LCSSA
LICM Re-commit : [LICM] Allow sinking when foldable in loop 2017-12-15 20:33:24 +00:00
LoadStoreVectorizer Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
LoopDataPrefetch
LoopDeletion [LoopDeletion] Handle users in unreachable block 2018-01-12 07:24:43 +00:00
LoopDistribute
LoopIdiom Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
LoopInterchange [LoopInterchange] Fix phi node ordering miscompile. 2017-10-21 13:58:37 +00:00
LoopLoadElim
LoopPredication [Loop Predication] Teach LP about reverse loops 2017-12-04 15:11:48 +00:00
LoopReroll Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
LoopRotate [LoopRotate] Detect loops with indirect branches better (we're giving up on them). 2018-01-09 23:54:35 +00:00
LoopSimplify [BasicBlockUtils] Check for unreachable preds before updating LI in UpdateAnalysisInformation 2018-01-02 16:25:50 +00:00
LoopSimplifyCFG
LoopStrengthReduce [SCEV] Do not cache S -> V if S is not equivalent of V 2018-01-09 06:47:14 +00:00
LoopUnroll [Unroll][DebugInfo] Propagate loop body's debug location to epilog preheader 2017-12-26 23:31:21 +00:00
LoopUnswitch [LoopUnswitch] Fix a simple bug which disables loop unswitch for select statement 2017-08-29 21:45:11 +00:00
LoopVectorize [LV] Don't call recordVectorLoopValueForInductionCast for newly-created IV from a trunc. 2018-01-15 10:56:07 +00:00
LoopVersioning
LoopVersioningLICM
LowerAtomic LowerAtomic: Don't skip optnone functions; atomic still need lowering (PR34020) 2017-08-23 15:43:28 +00:00
LowerExpectIntrinsic Fix builin_expect lowering bug 2017-06-07 18:32:24 +00:00
LowerGuardIntrinsic
LowerInvoke
LowerSwitch
LowerTypeTests LowerTypeTests: Add limited support for aliases 2018-01-10 00:00:51 +00:00
Mem2Reg [Debugify] Add a pass to test debug info preservation 2017-12-08 21:57:28 +00:00
MemCpyOpt Revert "[memcpyopt] Teach memcpyopt to optimize across basic blocks" 2017-12-28 05:10:33 +00:00
MergeFunc [TailRecursionElimination] Skip debug intrinsics. 2017-11-28 09:32:25 +00:00
MergeICmps Re-land "[MergeICmps] Disable mergeicmps if the target does not want to handle memcmp expansion." 2017-10-10 08:00:45 +00:00
MetaRenamer [MetaRenamer] Leave `@main` alone. 2017-08-01 05:14:45 +00:00
NameAnonGlobals
NaryReassociate
NewGVN NewGVN: Fix PR/33367, which was causing us to delete non-copy intrinsics accidentally in some rare cases 2018-01-09 20:12:42 +00:00
ObjCARC ObjCARC: do not increment past the end of the BB 2017-10-24 00:09:10 +00:00
PGOProfile [ICP] Expose unconditional call promotion interface 2017-12-20 19:26:37 +00:00
PartiallyInlineLibCalls [PartiallyInlineLibCalls][x86] add TTI hook to allow sqrt inlining to depend on arg rather than result 2017-11-27 21:15:43 +00:00
PhaseOrdering [SimplifyCFG] don't sink common insts too soon (PR34603) 2017-12-14 22:05:20 +00:00
PlaceSafepoints All libcalls should be considered to be GC-leaf functions. 2017-07-27 16:49:39 +00:00
PreISelIntrinsicLowering
PruneEH
Reassociate Reassociate: add global reassociation algorithm 2017-12-12 19:18:02 +00:00
Reg2Mem
RewriteStatepointsForGC [RewriteStatepoints] Fix incorrect assertion 2017-12-28 12:03:12 +00:00
SCCP [SCCP] Pick the right lattice value for constants. 2017-11-22 03:04:55 +00:00
SLPVectorizer [SLP] Add/update tests for SLP vectorizer, NFC. 2018-01-10 21:29:18 +00:00
SROA [SROA] fix assetion failure 2018-01-16 06:23:05 +00:00
SafeStack Parse and print DIExpressions inline to ease IR and MIR testing 2017-08-23 20:31:27 +00:00
SampleProfile Profiling tests: Endianess XFAIL for powerpc- (32-bit) 2018-01-09 20:09:23 +00:00
Scalarizer Remove the obsolete offset parameter from @llvm.dbg.value 2017-07-28 20:21:02 +00:00
SeparateConstOffsetFromGEP
SimpleLoopUnswitch [PM/Unswitch] Teach SimpleLoopUnswitch to do non-trivial unswitching, 2017-11-17 19:58:36 +00:00
SimplifyCFG [SimplifyCFG] Stop hoisting musttail calls incorrectly. 2017-12-31 16:47:16 +00:00
Sink [Sink] Really really fix predicate in legality check 2018-01-11 21:28:57 +00:00
SpeculateAroundPHIs Add a new pass to speculate around PHI nodes with constant (integer) operands when profitable. 2017-11-28 11:32:31 +00:00
SpeculativeExecution
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
StructurizeCFG StructurizeCFG: xfail one of the testcases from r321751 2018-01-04 17:23:24 +00:00
SyntheticCountsPropagation Add a pass to generate synthetic function entry counts. 2018-01-09 19:39:35 +00:00
TailCallElim Remove this test 2017-11-28 22:39:38 +00:00
ThinLTOBitcodeWriter Make internal/private GVs implicitly dso_local. 2018-01-11 22:15:05 +00:00
Util [InstCombine] Add a flag to disable LowerDbgDeclare 2017-09-13 01:43:25 +00:00
WholeProgramDevirt Make internal/private GVs implicitly dso_local. 2018-01-11 22:15:05 +00:00