Chris Lattner
aa99c94e2a
Revert 85678/85680. The decision is to stay with the current form of
...
indirectbr, thus we don't need "blockaddr(@func, null)". Eliminate it
for simplicity.
llvm-svn: 85699
2009-11-01 01:27:45 +00:00
Chris Lattner
c872b09676
llvm::SplitEdge should refuse to split an edge from an indirectbr.
...
Fix CodeGenPrepare to not try to split edges from indirectbr.
llvm-svn: 85690
2009-10-31 22:04:43 +00:00
Chris Lattner
ba364b0a9a
update the comment above llvm::SplitCriticalEdge, and make
...
it abort on IndirectBrInst as describe in the comment.
llvm-svn: 85688
2009-10-31 21:51:10 +00:00
Chris Lattner
3c89c53f35
adjust a couple xforms to work with null bb's in BlockAddress.
...
llvm-svn: 85680
2009-10-31 20:13:24 +00:00
Dan Gohman
2d02ff8cbb
Revert r85667. LoopUnroll currently can't call utility functions which
...
auto-update the DominatorTree because it doesn't keep the DominatorTree
current while it works.
llvm-svn: 85670
2009-10-31 17:33:01 +00:00
Dan Gohman
144694bcb7
Remove redundant code.
...
llvm-svn: 85668
2009-10-31 16:16:41 +00:00
Dan Gohman
041e2dbad1
Merge the enhancements from LoopUnroll's FoldBlockIntoPredecessor into
...
MergeBlockIntoPredecessor. This makes SimplifyCFG slightly more aggressive,
and makes it unnecessary for LoopUnroll to have its own copy of this code.
llvm-svn: 85667
2009-10-31 16:08:00 +00:00
Dan Gohman
fa8969f70e
Simplify this code.
...
llvm-svn: 85662
2009-10-31 14:46:50 +00:00
Dan Gohman
f35b6640f6
Update CMakeLists for recent renames.
...
llvm-svn: 85660
2009-10-31 14:38:25 +00:00
Dan Gohman
f70e76c435
Rename UnrollLoop.cpp to LoopUnroll.cpp, and LoopUnroll.cpp to
...
LoopUnrollPass.cpp, for consistency with other passes which are
similarly split.
llvm-svn: 85659
2009-10-31 14:37:31 +00:00
Dan Gohman
7f7d97eb73
Add a comment about a missed opportunity.
...
llvm-svn: 85635
2009-10-30 23:15:43 +00:00
Dan Gohman
1a95106602
Teach SimplifyCFG how to eliminate duplicate PHI nodes within a block.
...
This reduces codesize on a variety of codes by 1-2% on x86-64. It also
helps clean up after SSAUpdater.
llvm-svn: 85626
2009-10-30 22:39:04 +00:00
Chris Lattner
ee8b951e73
teach various passes about blockaddress. We no longer
...
crash on any clang tests.
llvm-svn: 85465
2009-10-29 01:21:20 +00:00
Chris Lattner
be060382e9
teach ValueMapper about BlockAddress', making bugpoint a lot more useful.
...
llvm-svn: 85458
2009-10-29 00:31:02 +00:00
Chris Lattner
cf5a47d63d
unindent massive blocks, no functionality change.
...
llvm-svn: 85457
2009-10-29 00:28:30 +00:00
Devang Patel
11cf3f4a27
Factor out redundancy from clone() implementations.
...
llvm-svn: 85327
2009-10-27 22:16:29 +00:00
Victor Hernandez
f390e04a47
Rename MallocFreeHelper as MemoryBuiltins
...
llvm-svn: 85286
2009-10-27 20:05:49 +00:00
Chris Lattner
c6b3b25f94
Fix a pretty serious misfeature of the inliner: if it inlines a function
...
with multiple return values it inserts a PHI to merge them all together.
However, if the return values are all the same, it ends up with a pointless
PHI and this pointless PHI happens to really block SRoA from happening in
at least a silly C++ example written by Doug, but probably others. This
fixes rdar://7339069.
llvm-svn: 85206
2009-10-27 05:39:41 +00:00
Victor Hernandez
762195bd01
Rename MallocHelper as MallocFreeHelper, since it now also identifies calls to free()
...
llvm-svn: 85181
2009-10-26 23:58:56 +00:00
Victor Hernandez
de5ad42aa1
Remove FreeInst.
...
Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.
llvm-svn: 85176
2009-10-26 23:43:48 +00:00
Nick Lewycky
974e12b2d3
Remove includes of Support/Compiler.h that are no longer needed after the
...
VISIBILITY_HIDDEN removal.
llvm-svn: 85043
2009-10-25 06:57:41 +00:00
Nick Lewycky
02d5f77d26
Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.
...
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.
llvm-svn: 85042
2009-10-25 06:33:48 +00:00
Dan Gohman
ef41a1ce3c
MapValue doesn't needs its LLVMContext argument.
...
llvm-svn: 85020
2009-10-24 23:37:16 +00:00
Victor Hernandez
e297149e26
Auto-upgrade free instructions to calls to the builtin free function.
...
Update all analysis passes and transforms to treat free calls just like FreeInst.
Remove RaiseAllocations and all its tests since FreeInst no longer needs to be raised.
llvm-svn: 84987
2009-10-24 04:23:03 +00:00
Chris Lattner
7f903681ac
alternate fix for PR5258 which avoids worklist problems, with reduced testcase.
...
llvm-svn: 84667
2009-10-20 20:27:49 +00:00
Torok Edwin
cf10ec951d
Fix PR5258, jump-threading creating invalid PHIs.
...
When an incoming value for a PHI is updated, we must also updated all other
incoming values for the same BB to match, otherwise we create invalid PHIs.
llvm-svn: 84638
2009-10-20 15:42:00 +00:00
Dan Gohman
8f986672a1
Fix SplitBlockPredecessors' LoopInfo updating code to handle the case
...
where a loop's header is being split and it has predecessors which are not
contained by the most-nested loop which contains the loop.
This fixes PR5235.
llvm-svn: 84505
2009-10-19 16:04:50 +00:00
Dan Gohman
511d2e26dd
Change instnamer to name arguments "arg" instead of "tmp" for clarity, and
...
to name basic blocks "bb" instead of "BB", for consistency.
llvm-svn: 84502
2009-10-19 14:47:32 +00:00
Chris Lattner
88b36f1140
Simplify some code (first hunk) and fix PR5208 (second hunk) by
...
updating the callgraph when introducing a call.
llvm-svn: 84310
2009-10-17 05:39:39 +00:00
Victor Hernandez
a3aaf85e23
Remove MallocInst from LLVM Instructions.
...
llvm-svn: 84299
2009-10-17 01:18:07 +00:00
Duncan Sands
0058c7bcb0
Strip trailing white space.
...
llvm-svn: 84256
2009-10-16 15:20:13 +00:00
Ted Kremenek
113d959f1b
Update CMake file.
...
llvm-svn: 84001
2009-10-13 18:48:07 +00:00
Dan Gohman
54463e837a
Commit the removal of this file, which is now moved to lib/Analysis.
...
llvm-svn: 83999
2009-10-13 18:37:20 +00:00
Dan Gohman
5b3e05bcaa
Start refactoring the inline cost estimation code so that it can be used
...
for purposes other than inlining.
llvm-svn: 83997
2009-10-13 18:24:11 +00:00
Chris Lattner
19788ca686
change simplifycfg to not duplicate 'unwind' instructions. Hopefully
...
this will increase the likelihood of common code getting sunk towards
the unwind.
llvm-svn: 83996
2009-10-13 18:13:05 +00:00
Chris Lattner
71d353dd48
rewrite LCSSA to use SSAUpdate, to only return true if it modifies
...
the IR, and to implement the FIXME'd optimization.
llvm-svn: 83748
2009-10-11 02:53:37 +00:00
Chris Lattner
101dde30ed
clean up and simplify some code. Don't use setvector when things will be
...
inserted only once, just use vector. Don't compute ExitBlocks unless we
need it, change std::sort to array_pod_sort.
llvm-svn: 83747
2009-10-11 01:07:15 +00:00
Chris Lattner
9c382cebc5
add a simple helper method.
...
llvm-svn: 83745
2009-10-10 23:41:48 +00:00
Chris Lattner
249265de06
add ability for clients of SSAUpdater to find out about the
...
PHI nodes inserted.
llvm-svn: 83744
2009-10-10 23:15:24 +00:00
Chris Lattner
67cdd8b567
add the ability to get a rewritten value from the middle of a block,
...
not just at the end. Add a big comment explaining when this could
be useful (which never happens for jump threading).
llvm-svn: 83741
2009-10-10 23:00:11 +00:00
Chris Lattner
e474a8d3a7
rename GetValueInBlock -> GetValueAtEndOfBlock to better reflect
...
what it does.
llvm-svn: 83740
2009-10-10 22:41:58 +00:00
Chris Lattner
65e69a77e1
use a typedef instead of spelling out an insane type. Yay for auto someday.
...
llvm-svn: 83707
2009-10-10 09:09:20 +00:00
Chris Lattner
60d4e69c81
Implement an efficient and fully general SSA update mechanism that
...
works on unstructured CFGs. This implements PR217, our oldest open PR.
llvm-svn: 83705
2009-10-10 09:04:27 +00:00
Chris Lattner
f30a2b0c86
random tidying
...
llvm-svn: 83701
2009-10-10 06:22:45 +00:00
Dale Johannesen
96a5b87ae2
Use names instead of numbers for some of the magic
...
constants used in inlining heuristics (especially
those used in more than one file). No functional change.
llvm-svn: 83675
2009-10-09 21:42:02 +00:00
Eric Christopher
e666bc9f64
Add FreeInst to the "is a call" check for Insts that are calls, but
...
not intrinsics.
llvm-svn: 83441
2009-10-07 00:54:08 +00:00
Eric Christopher
6ba26317ce
While we still have a MallocInst treat it as a call like any other
...
for inlining.
When MallocInst goes away this code will be subsumed as part of
calls and work just fine...
llvm-svn: 83434
2009-10-07 00:02:18 +00:00
Duncan Sands
9ed7b16bf3
Introduce and use convenience methods for getting pointer types
...
where the element is of a basic builtin type. For example, to get
an i8* use getInt8PtrTy.
llvm-svn: 83379
2009-10-06 15:40:36 +00:00
Dan Gohman
e525d9ddc0
Remove an unnnecessary LLVMContext argument in
...
ConstantFoldLoadThroughGEPConstantExpr.
llvm-svn: 83311
2009-10-05 16:36:26 +00:00
Owen Anderson
b5049bebb3
Do away with the strange use of BitVectors in SSI, and just use normal sets. This makes the code much more C++/LLVM-ish.
...
llvm-svn: 83286
2009-10-04 18:49:55 +00:00