llvm-6502/test/Transforms
Arnaud A. de Grandmaison beeec3231e Fix tail recursion elimination
When the BasicBlock containing the return instrution has a PHI with 2
incoming values, FoldReturnIntoUncondBranch will remove the no longer
used incoming value and remove the no longer needed phi as well. This
leaves us with a BB that no longer has a PHI, but the subsequent call
to FoldReturnIntoUncondBranch from FoldReturnAndProcessPred will not
remove the return instruction (which still uses the result of the call
instruction). This prevents EliminateRecursiveTailCall to remove
the value, as it is still being used in a basicblock which has no
predecessors.

The basicblock can not be erased on the spot, because its iterator is
still being used in runTRE.

This issue was exposed when removing the threshold on size for lifetime
marker insertion for named temporaries in clang. The testcase is a much
reduced version of peelOffOuterExpr(const Expr*, const ExplodedNode *)
from clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222354 91177308-0d34-0410-b5e6-96231b3b80d8
2014-11-19 13:32:51 +00:00
..
ADCE
AddDiscriminators
AlignmentFromAssumptions
ArgumentPromotion
AtomicExpand/ARM
BBVectorize
BranchFolding Delete -std-compile-opts. 2014-10-16 20:00:02 +00:00
CodeExtractor
CodeGenPrepare [CodeGenPrepare][AArch64] Fix a TLI legality check on iPTR to use a lowered instead. 2014-11-12 22:16:55 +00:00
ConstantHoisting
ConstantMerge
ConstProp
CorrelatedValuePropagation
DeadArgElim DebugInfo+DeadArgElimination: Ensure llvm::Function*s from debug info are updated even when DAE removes both varargs and non-varargs arguments on the same function. 2014-10-07 15:10:23 +00:00
DeadStoreElimination [DSE] Remove no-data-layout-only type-based overlap checking 2014-10-17 11:56:00 +00:00
DebugIR
EarlyCSE Tweak EarlyCSE to recognize series of dead stores 2014-11-18 17:46:32 +00:00
FunctionAttrs Normally an 'optnone' function goes through fast-isel, which does not 2014-11-03 18:19:26 +00:00
GCOVProfiling Relax the gcov version.ll test to check '.' instead of '\*' 2014-11-13 23:07:55 +00:00
GlobalDCE GlobalDCE: Don't drop any COMDAT members 2014-10-07 07:07:19 +00:00
GlobalOpt GlobalOpt: Don't drop unused memberes of a Comdat 2014-10-08 07:23:31 +00:00
GVN Revert r222039 because of bot failure. 2014-11-19 00:13:26 +00:00
IndVarSimplify IndVarSimplify: Allow LFTR to fire more often 2014-11-18 02:20:58 +00:00
Inline Revert "Transforms: reapply SVN r219899" 2014-11-04 02:02:14 +00:00
InstCombine InstCombine: Fix another infinite loop caused by visitFPTrunc 2014-11-18 22:06:45 +00:00
InstMerge Use Alias Analysis to hoist 2 loads from diamond to the common predecessor basic block. 2014-11-02 08:03:05 +00:00
InstSimplify InstSimplify: Exact shifts of X by Y are X if X has the lsb set 2014-11-05 00:59:59 +00:00
Internalize
IPConstantProp
JumpThreading Fix a somewhat subtle pair of issues with JumpThreading I introduced in 2014-10-20 05:34:36 +00:00
LCSSA
LICM AliasSetTracker: UnknownInsts should contribute to the refcount 2014-11-19 09:41:05 +00:00
LoadCombine Use AA in LoadCombine 2014-11-03 23:19:16 +00:00
LoopDeletion
LoopIdiom
LoopReroll
LoopRotate llvm/test/Transforms/LoopRotate/nosimplifylatch.ll: Fix possibly mis-repeatedly-pasted test. 2014-10-29 23:05:12 +00:00
LoopSimplify
LoopStrengthReduce
LoopUnroll [SCEV] Improve Scalar Evolution's use of no {un,}signed wrap flags 2014-10-31 11:40:32 +00:00
LoopUnswitch
LoopVectorize Addition to r216371 (SLP and Loop Vectorization) and r218607 where 2014-11-11 07:39:27 +00:00
LowerAtomic
LowerExpectIntrinsic
LowerInvoke
LowerSwitch
Mem2Reg Delete -std-compile-opts. 2014-10-16 20:00:02 +00:00
MemCpyOpt Allow call-slop optzn for destinations with a suitable dereferenceable attribute 2014-10-16 19:43:08 +00:00
MergeFunc
MetaRenamer
ObjCARC Add back r222061 with a fix. 2014-11-17 02:28:27 +00:00
PartiallyInlineLibCalls
PhaseOrdering
PruneEH
Reassociate [Reassociate] Use test cases that can actually be optimized to verify optional 2014-11-18 20:34:01 +00:00
Reg2Mem
SampleProfile llvm/test/Transforms/SampleProfile/syntax.ll: Relax MISSING-FILE not to 2014-10-30 22:28:46 +00:00
Scalarizer
ScalarRepl
SCCP SCCP: overdefined calls cannot become constant 2014-11-07 08:54:19 +00:00
SeparateConstOffsetFromGEP/NVPTX [SeparateConstOffsetFromGEP] Fixed a bug related to unsigned modulo 2014-10-25 18:34:03 +00:00
SimplifyCFG [SimplifyCFG] Make the value type of the hole check bitmask a power-of-2. 2014-11-17 19:39:56 +00:00
Sink
SLPVectorizer [SLPVectorize] Basic ephemeral-value awareness 2014-10-15 17:35:01 +00:00
SROA [SROA] Change how SROA does vector-based promotion of allocas to handle 2014-10-18 00:44:02 +00:00
StripSymbols
StructurizeCFG
TailCallElim Fix tail recursion elimination 2014-11-19 13:32:51 +00:00
TailDup
Util [SwitchLowering] Fix the "fixPhis" function. 2014-11-10 21:05:27 +00:00