| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
This fixes PR4905
llvm-svn: 81174
|
| |
|
|
| |
llvm-svn: 81173
|
| |
|
|
|
|
|
| |
when the new method gives the same result as the original
(as far as I can see). This will hopefully pacify icc.
llvm-svn: 81131
|
| |
|
|
|
|
| |
Patch by Erick Tryzelaar.
llvm-svn: 81116
|
| |
|
|
|
|
| |
tests significantly.
llvm-svn: 81101
|
| |
|
|
| |
llvm-svn: 81044
|
| |
|
|
|
|
| |
(See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090831/086219.html)
llvm-svn: 81007
|
| |
|
|
| |
llvm-svn: 80970
|
| |
|
|
|
|
| |
introduced regressions in the Ocaml bindings tests.
llvm-svn: 80969
|
| |
|
|
|
|
|
|
|
|
|
| |
D test/Analysis/Profiling
--- Reverse-merging r80907 into '.':
U lib/Analysis/ProfileInfoLoaderPass.cpp
Attempt to remove failure in the self-hosting build bot.
llvm-svn: 80966
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and exact flags. Because ConstantExprs are uniqued, creating an
expression with this flag causes all expressions with the same operands
to have the same flag, which may not be safe. Add, sub, mul, and sdiv
ConstantExprs are usually folded anyway, so the main interesting flag
here is inbounds, and the constant folder already knows how to set the
inbounds flag automatically in most cases, so there isn't an urgent need
for the API support.
This can be reconsidered in the future, but for now just removing these
API bits eliminates a source of potential trouble with little downside.
llvm-svn: 80959
|
| |
|
|
| |
llvm-svn: 80942
|
| |
|
|
|
|
|
|
|
| |
that these passes are properly preserved.
Fix several transformation passes that claimed to preserve LoopSimplify
form but weren't.
llvm-svn: 80926
|
| |
|
|
|
|
|
| |
LoopSimplify form, which is currently only available on Loops (and
not MachineLoops). Also, move the code out of the header file.
llvm-svn: 80923
|
| |
|
|
| |
llvm-svn: 80919
|
| |
|
|
| |
llvm-svn: 80918
|
| |
|
|
| |
llvm-svn: 80912
|
| |
|
|
|
|
| |
(See http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20090831/086139.html)
llvm-svn: 80909
|
| |
|
|
| |
llvm-svn: 80907
|
| |
|
|
|
|
| |
buildbot's stage 2 configure
llvm-svn: 80871
|
| |
|
|
|
|
| |
this time. I'll back out if needed...
llvm-svn: 80858
|
| |
|
|
|
|
| |
r80406, and readd a -print-dbginfo test.
llvm-svn: 80778
|
| |
|
|
|
|
|
| |
and we get the original pointer type. This doesn't mean that we're
at the first pointer being indexed. Correct the predicate.
llvm-svn: 80762
|
| |
|
|
|
|
| |
a comment so that I don't change this in the future :)
llvm-svn: 80760
|
| |
|
|
| |
llvm-svn: 80759
|
| |
|
|
|
|
|
| |
about singular iterators when building with expensive
checks turned on.
llvm-svn: 80757
|
| |
|
|
| |
llvm-svn: 80730
|
| |
|
|
|
|
| |
clang regtest failures.
llvm-svn: 80724
|
| |
|
|
| |
llvm-svn: 80718
|
| |
|
|
|
|
| |
This enables LLVM to read the OptimalEdgeProfiles.
llvm-svn: 80715
|
| |
|
|
| |
llvm-svn: 80711
|
| |
|
|
| |
llvm-svn: 80708
|
| |
|
|
|
|
|
| |
CGSCC passes make change to ensure they are updating the callgraph correctly
(when assertions are enabled).
llvm-svn: 80698
|
| |
|
|
|
|
| |
by expensive checking.
llvm-svn: 80695
|
| |
|
|
|
|
| |
llvm-gcc build when expensive checking is turned on.
llvm-svn: 80671
|
| |
|
|
| |
llvm-svn: 80669
|
| |
|
|
|
|
|
|
|
| |
Optimal edge profiling is only possible when blocks with no predecessors get an
virtual edge (BB,0) that counts the execution frequencies of this
function-exiting blocks.
This patch makes the necessary changes before actually enabling optimal edge profiling.
llvm-svn: 80667
|
| |
|
|
|
|
|
|
| |
This adds a pass to verify the current profile against the flow conditions.
This is very helpful when later on trying to perserve the profiling information
during all passes.
llvm-svn: 80666
|
| |
|
|
|
|
|
|
|
|
|
|
| |
for sanity. This didn't turn up any bugs.
Change CallGraphNode to maintain its "callsite" information in the
call edges list as a WeakVH instead of as an instruction*. This fixes
a broad class of dangling pointer bugs, and makes CallGraph have a number
of useful invariants again. This fixes the class of problem indicated
by PR4029 and PR3601.
llvm-svn: 80663
|
| |
|
|
| |
llvm-svn: 80648
|
| |
|
|
| |
llvm-svn: 80637
|
| |
|
|
| |
llvm-svn: 80633
|
| |
|
|
| |
llvm-svn: 80632
|
| |
|
|
| |
llvm-svn: 80627
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
SCEVUnknowns, as the non-SCEVUnknown cases in the getSCEVAtScope code
can also end up repeatedly climing through the same expression trees,
which can be unusably slow when the trees are very tall.
Also, add a quick check for SCEV pointer equality to the main
SCEV comparison routine, as the full comparison code can be expensive
in the case of large expression trees.
These fix compile-time problems in some pathlogical cases.
llvm-svn: 80623
|
| |
|
|
| |
llvm-svn: 80620
|
| |
|
|
| |
llvm-svn: 80618
|
| |
|
|
| |
llvm-svn: 80602
|
| |
|
|
| |
llvm-svn: 80595
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
stem from the fact that we have two types of passes that need to update it:
1. callgraphscc and module passes that are explicitly aware of it
2. Functionpasses (and loop passes etc) that are interlaced with CGSCC passes
by the CGSCC Passmgr.
In the case of #1, we can reasonably expect the passes to update the call
graph just like any analysis. However, functionpasses are not and generally
should not be CG aware. This has caused us no end of problems, so this takes
a new approach. Logically, the CGSCC Pass manager can rescan every function
after it runs a function pass over it to see if the functionpass made any
updates to the IR that affect the callgraph. This allows it to catch new calls
introduced by the functionpass.
In practice, doing this would be slow. This implementation keeps track of
whether or not the current scc is dirtied by a function pass, and, if so,
delays updating the callgraph until it is actually needed again. This was
we avoid extraneous rescans, but we still have good invariants when the
callgraph is needed.
Step #2 of the "give Callgraph some sane invariants" is to change CallGraphNode
to use a CallBackVH for the callsite entry of the CallGraphNode. This way
we can immediately remove entries from the callgraph when a FunctionPass is
active instead of having dangling pointers. The current pass tries to tolerate
these dangling pointers, but it is just an evil hack.
This is related to PR3601/4835/4029. This also reverts r80541, a hack working
around the sad lack of invariants.
llvm-svn: 80566
|