1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 03:23:01 +02:00
llvm-mirror/test/Transforms
Sanjoy Das aa011535f3 [IndVars] Fix PR25576
`LCSSASafePhiForRAUW` as computed was incorrect -- in cases like
these (this exact example does not actually trigger the bug):

define i32 @f(i32 %n, i1* %c) {
entry:
  br label %outer.loop

outer.loop:
  br label %inner.loop

inner.loop:
  %iv = phi i32 [ 0, %outer.loop ], [ %iv.inc, %inner.loop ]
  %iv.inc = add nuw nsw i32 %iv, 1
  %tc = udiv i32 %n, 13
  %be.cond = icmp ult i32 %iv, %tc
  br i1 %be.cond, label %inner.loop, label %inner.exit

inner.exit:
  %iv.lcssa = phi i32 [ %iv, %inner.loop ]
  %outer.be.cond = load volatile i1, i1* %c
  br i1 %outer.be.cond, label %outer.loop, label %leave

leave:
  %iv.lcssa.lcssa = phi i32 [ %iv.lcssa, %inner.exit ]
  ret i32 %iv.lcssa.lcssa
}

`LCSSASafePhiForRAUW` is true for `%iv.lcssa` when re-rewriting the exit
value of `%iv` for `%inner.loop` to `%tc` (this can happen due to
`SCEVExpander::findExistingExpansion`), but the RAUW breaks LCSSA.

To fix this, instead of computing `SafePhi` with special logic, decide
the safety of RAUW directly via `replacementPreservesLCSSAForm`.

llvm-svn: 258016
2016-01-17 18:12:52 +00:00
..
ADCE
AddDiscriminators Reimplement discriminator assignment algorithm. 2015-11-19 19:53:05 +00:00
AlignmentFromAssumptions Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
ArgumentPromotion
AtomicExpand [IR] Add support for floating pointer atomic loads and stores 2015-12-16 00:49:36 +00:00
BBVectorize Have a single way for creating unique value names. 2015-11-22 00:16:24 +00:00
BDCE
BranchFolding Move branch folding test to a better location. 2015-12-03 19:41:25 +00:00
CodeExtractor
CodeGenPrepare [InstCombine] Rewrite bswap/bitreverse handling completely. 2016-01-15 09:20:19 +00:00
ConstantHoisting
ConstantMerge
ConstProp IR: Make ConstantDataArray::getFP actually return a ConstantDataArray 2015-12-09 21:21:07 +00:00
CorrelatedValuePropagation Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
CrossDSOCFI Cross-DSO control flow integrity (LLVM part). 2015-12-15 23:00:08 +00:00
DeadArgElim [OperandBundles] Have DeadArgElim play nice with operand bundles 2015-12-23 09:58:36 +00:00
DeadStoreElimination [BasicAliasAnalysis] Take into account operand bundles in the getModRefInfo function 2016-01-16 12:15:53 +00:00
EarlyCSE Fix several accidental DOS line endings in source files 2016-01-03 17:22:03 +00:00
EliminateAvailableExternally
Float2Int [Float2Int] Don't operate on vector instructions 2015-12-09 21:08:18 +00:00
ForcedFunctionAttrs [attrs] Split off the forced attributes utility into its own pass that 2015-12-27 08:13:45 +00:00
FunctionAttrs [attrs] Split the late-revisit pattern for deducing norecurse in 2016-01-08 10:55:52 +00:00
FunctionImport Fix bot failure from r257493: remove extraneous temp file read 2016-01-12 17:53:59 +00:00
GCOVProfiling
GlobalDCE
GlobalOpt Also add unnamed_addr to functions. 2015-12-22 20:43:30 +00:00
GVN [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
IndVarSimplify [IndVars] Fix PR25576 2016-01-17 18:12:52 +00:00
InferFunctionAttrs [BasicAA] Remove special casing of memset_pattern16 in favor of generic attribute inference 2016-01-06 04:53:16 +00:00
Inline [Inliner] Merge the attributes of the caller and callee functions 2016-01-13 06:02:45 +00:00
InstCombine Push isDereferenceableAndAlignedPointer down into isSafeToLoadUnconditionally 2016-01-17 12:35:29 +00:00
InstMerge
InstSimplify CannotBeOrderedLessThanZero: add some missing cases 2016-01-12 23:37:30 +00:00
Internalize
IPConstantProp [SCCP] Don't violate the lattice invariants 2016-01-07 21:36:16 +00:00
IRCE
JumpThreading Add test for r257279. 2016-01-10 07:13:33 +00:00
LCSSA [WinEH] Update LCSSA to handle catchswitch with handlers inside and outside a loop 2015-12-18 18:12:35 +00:00
LICM [LICM] Fix a small oversight introduced in r256763 2016-01-04 23:16:22 +00:00
LoadCombine
LoopDeletion
LoopDistribute
LoopIdiom Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
LoopInterchange
LoopLoadElim
LoopReroll
LoopRotate
LoopSimplify
LoopStrengthReduce [IR] Remove terminatepad 2015-12-14 18:34:23 +00:00
LoopUnroll LoopUnroll: Use the optsize threshold for minsize as well 2016-01-11 22:39:43 +00:00
LoopUnswitch [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
LoopVectorize [LoopVectorizer] Refine loop vectorizer's register usage calculator by ignoring specific instructions. 2015-12-15 22:45:09 +00:00
LowerAtomic
LowerBitSets [cfi] Fix LowerBitSets on 32-bit targets. 2015-12-21 22:14:04 +00:00
LowerExpectIntrinsic
LowerInvoke
LowerSwitch Have a single way for creating unique value names. 2015-11-22 00:16:24 +00:00
Mem2Reg [Mem2Reg] Respect optnone 2015-12-11 13:36:59 +00:00
MemCpyOpt Fix PR26051: Memcpy optimization should introduce a call to memcpy before the store destination position 2016-01-06 23:50:22 +00:00
MergeFunc [IR] Remove terminatepad 2015-12-14 18:34:23 +00:00
MetaRenamer Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
NaryReassociate [NaryReassociate] allow candidate to have a different type 2015-12-18 21:36:30 +00:00
ObjCARC Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
PartiallyInlineLibCalls
PGOProfile [PGO] make profile prefix even shorter and more readable 2015-12-15 00:32:56 +00:00
PhaseOrdering
PlaceSafepoints [Statepoints] Check for the "gc-leaf-function" attribute on call sites as well. 2016-01-05 23:59:08 +00:00
PruneEH [OperandBundles] Have PruneEH work correct with operand bundles. 2015-12-08 23:16:52 +00:00
Reassociate Instructions to be redone only if from the same BB 2016-01-07 23:22:55 +00:00
Reg2Mem
RewriteStatepointsForGC [RS4GC] Update and simplify handling of Constants in findBaseDefiningValueOfVector(). 2016-01-09 04:02:16 +00:00
SafeStack [safestack] Add option for non-TLS unsafe stack pointer. 2015-12-22 00:13:11 +00:00
SampleProfile SamplePGO - Add initial support for inliner annotations. 2015-11-27 23:14:51 +00:00
Scalarizer
ScalarRepl Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
SCCP
SeparateConstOffsetFromGEP
SimplifyCFG [SimplifyCFG] Extend SimplifyResume to handle phi of trivial landing pad. 2016-01-10 05:48:01 +00:00
Sink [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
SLPVectorizer Reapply r257800 with fix 2016-01-15 18:51:51 +00:00
SpeculativeExecution
SROA [SROA] Also insert a bit piece expression if only one piece is needed 2016-01-14 20:06:34 +00:00
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols
StructurizeCFG
TailCallElim Push isDereferenceableAndAlignedPointer down into isSafeToLoadUnconditionally 2016-01-17 12:35:29 +00:00
TailDup
Util [Utils] Fix incorrect dbg.declare store conversion 2016-01-14 19:12:27 +00:00