- Aug 31, 2011
-
-
Rafael Espindola authored
ssa, so it has to be run really early in the pipeline. Any replacement should probably use the SSAUpdater. llvm-svn: 138841
-
- Aug 30, 2011
-
-
Owen Anderson authored
llvm-svn: 138829
-
Owen Anderson authored
When walking backwards to eliminate final stores to allocas at the end of a function, encountering an unrelated store should not cause us to give up like encountering a load does. llvm-svn: 138809
-
- Aug 29, 2011
-
-
Nadav Rotem authored
Optimize chained bitcasts of the form A->B->A. Undo r138722 and change isEliminableCastPair to allow this case. llvm-svn: 138756
-
- Aug 28, 2011
-
-
Nadav Rotem authored
llvm-svn: 138722
-
- Aug 26, 2011
-
-
Bill Wendling authored
llvm-svn: 138651
-
Benjamin Kramer authored
- Reword comments. - Allow undefined behavior interfering with undefined behavior. - Add address space checks. llvm-svn: 138619
-
Benjamin Kramer authored
SimplifyCFG: If we have a PHI node that can evaluate to NULL and do a load or store to the address returned by the PHI node then we can consider this incoming value as dead and remove the edge pointing there, unless there are instructions that can affect control flow executed in between. In theory this could be extended to other instructions, eg. division by zero, but it's likely that it will "miscompile" some code because people depend on div by zero not trapping. NULL pointer dereference usually leads to a crash so we should be on the safe side. This shrinks the size of a Release clang by 16k on x86_64. llvm-svn: 138618
-
- Aug 25, 2011
-
-
Bill Wendling authored
proper function to do it. llvm-svn: 138550
-
Bill Wendling authored
getFirstNonPHI so that it will skip over the landingpad instructions as well. llvm-svn: 138537
-
- Aug 24, 2011
-
-
Bill Wendling authored
llvm-svn: 138481
-
Bill Wendling authored
insertion place. llvm-svn: 138473
-
Rafael Espindola authored
dominator information even though dominators were previously computed. Patch by Nick Sumner. llvm-svn: 138449
-
- Aug 22, 2011
-
-
Dan Gohman authored
llvm-svn: 138243
-
Dan Gohman authored
llvm-svn: 138242
-
- Aug 20, 2011
-
-
Bill Wendling authored
then don't split it a second time, since that block will be dead. llvm-svn: 138153
-
- Aug 19, 2011
-
-
Bill Wendling authored
llvm-svn: 138102
-
Benjamin Kramer authored
llvm-svn: 138025
-
Benjamin Kramer authored
C API functions must be able to see their extern "C" definitions, or it will be impossible to call them from C. llvm-svn: 138022
-
Dan Gohman authored
known-incremented level, because the two concepts can be used to prove the saftey of a retain+release removal in different ways. llvm-svn: 138016
-
Bill Wendling authored
We have to be careful when splitting the landing pad block, because the landingpad instruction is required to remain as the first non-PHI of an invoke's unwind edge. To retain this, we split the block into two blocks, moving the predecessors within the loop to one block and the remaining predecessors to the other. The landingpad instruction is cloned into the new blocks. llvm-svn: 138015
-
Bill Wendling authored
SplitLandingPadPredecessors is similar to SplitBlockPredecessors in that it splits the current block and attaches a set of predecessors to the new basic block. However, it differs from SplitBlockPredecessors in that it's specifically designed to handle landing pad blocks. Two new basic blocks are created: one that is has the vector of predecessors as its predecessors and one that has the remaining predecessors as its predecessors. Those two new blocks then receive a cloned copy of the landingpad instruction from the original block. The landingpad instructions are joined in a PHI, etc. Like SplitBlockPredecessors, it updates the LLVM IR, AliasAnalysis, DominatorTree, DominanceFrontier, LoopInfo, and LCCSA analyses. llvm-svn: 138014
-
Bill Wendling authored
llvm-svn: 138008
-
- Aug 18, 2011
-
-
Dan Gohman authored
llvm-svn: 137985
-
Bill Wendling authored
aren't from an indirect branch need to be dominated by the loop header. llvm-svn: 137981
-
Bill Wendling authored
function. llvm-svn: 137979
-
Bill Wendling authored
llvm-svn: 137978
-
Nick Lewycky authored
of debug info. llvm-svn: 137972
-
Bill Wendling authored
llvm-svn: 137959
-
Bill Wendling authored
functionality change. llvm-svn: 137926
-
Devang Patel authored
Dramatically speedup codegen prepare by a) avoiding use of dominator tree and b) doing a separate pass over dbg.value instructions. llvm-svn: 137908
-
Devang Patel authored
llvm-svn: 137890
-
Eli Friedman authored
llvm-svn: 137888
-
- Aug 17, 2011
-
-
Bill Wendling authored
PRE needs the landing pads to have their critical edges split. Doing this for a landing pad is non-trivial. Abandon the attempt to perform PRE when we come across a landing pad. (Reviewed by Owen!) llvm-svn: 137876
-
Bill Wendling authored
llvm-svn: 137872
-
Bill Wendling authored
One way to exit the loop is through an unwind edge. However, that may involve splitting the critical edge of the landing pad, which is non-trivial. Prevent the transformation from rewriting the landing pad exit loop block. llvm-svn: 137871
-
Bill Wendling authored
so requires more care than this generic algorithm should handle. llvm-svn: 137866
-
Bill Wendling authored
instruction should be marked as potentially reading and/or writing memory. llvm-svn: 137863
-
Eli Friedman authored
Silly mistake from r137777; restore significant isStructTy() checks. While here, be a bit more defensive with unknown instructions. Fixes PR10687. llvm-svn: 137836
-
Eli Friedman authored
making random bad assumptions about instructions which are not explicitly listed. Includes fix for rdar://9956541, a version of "undef ^ undef should return 0 because it's easier than arguing with users". llvm-svn: 137777
-