Dan Gohman
8b7aa3053d
Use bool instead of int, now that it no longer evokes a warning.
...
llvm-svn: 60678
2008-12-07 21:33:27 +00:00
Dan Gohman
42bd5cffc9
Use intptr_t instead of unsigned here, which is more appropriate
...
in a really obscure way, but more importantly has the side effect
of avoiding a GCC warning in the case that IntType is bool.
llvm-svn: 60677
2008-12-07 21:28:00 +00:00
Chris Lattner
1ff38d6629
add an assert. the cast<> below would catch this but a message is more
...
useful.
llvm-svn: 60674
2008-12-07 18:45:15 +00:00
Chris Lattner
8cd875dac6
factor some code better.
...
llvm-svn: 60673
2008-12-07 18:42:51 +00:00
Chris Lattner
9ebcc276e4
factor some code, fixing some fixme's.
...
llvm-svn: 60672
2008-12-07 18:39:13 +00:00
Chris Lattner
279bab1c8a
fix a typo duncan noticed!
...
llvm-svn: 60671
2008-12-07 18:21:37 +00:00
Oscar Fuentes
3eaab7ff7a
CMake: Added Tool.cpp to tools/llvmc/driver.
...
llvm-svn: 60670
2008-12-07 17:01:16 +00:00
Mikhail Glushenkov
63bd106f2c
Man page update.
...
llvm-svn: 60669
2008-12-07 16:48:07 +00:00
Mikhail Glushenkov
c1fc4efe85
Describe recent changes in the documentation.
...
llvm-svn: 60668
2008-12-07 16:47:42 +00:00
Mikhail Glushenkov
c75a4df77c
Make 'extern' an option property.
...
Makes (forward) work better.
llvm-svn: 60667
2008-12-07 16:47:12 +00:00
Mikhail Glushenkov
bc0bc455b7
Plugin updates: support more options.
...
llvm-svn: 60666
2008-12-07 16:46:23 +00:00
Mikhail Glushenkov
72a5dd4ae6
Join tools couldn't be used in the middle of the toolchain.
...
llvm-svn: 60665
2008-12-07 16:45:37 +00:00
Mikhail Glushenkov
e0c9f63882
Better error message.
...
llvm-svn: 60664
2008-12-07 16:45:12 +00:00
Mikhail Glushenkov
85098f0f90
Re-apply Cedric's changes.
...
Use B instead of Beg (for consistency), but NodeA and NodeB instead of A
and B.
llvm-svn: 60663
2008-12-07 16:44:47 +00:00
Mikhail Glushenkov
a60c58c6dc
Add some clarifying comments.
...
llvm-svn: 60662
2008-12-07 16:44:15 +00:00
Mikhail Glushenkov
7a56e66e32
Enable the Clang plugin by default.
...
This will eventually replace `ccc`. The command `llvmc -clang` now uses
the Clang toolchain instead of `llvm-gcc`.
llvm-svn: 60661
2008-12-07 16:43:42 +00:00
Mikhail Glushenkov
53f66e6d9a
Update plugins to use (actions).
...
llvm-svn: 60660
2008-12-07 16:43:17 +00:00
Mikhail Glushenkov
4522fd9b8a
Try to guess when the auto-generated cl::Sink option should be marked 'extern'.
...
This would be much easier to do if the CommandLine library didn't use
global state. Global state is evil.
llvm-svn: 60659
2008-12-07 16:42:47 +00:00
Mikhail Glushenkov
1348ac2185
Add a (progn)-like construct for (actions). Implemented as a DAG list.
...
llvm-svn: 60658
2008-12-07 16:42:22 +00:00
Mikhail Glushenkov
d676237550
Add tests for tblgen's LLVMC backend.
...
llvm-svn: 60657
2008-12-07 16:41:50 +00:00
Mikhail Glushenkov
f01331152a
Use (actions) instead of option properties, support external options.
...
Also includes a major refactoring. See documentation for more
information.
llvm-svn: 60656
2008-12-07 16:41:11 +00:00
Chris Lattner
16ea827dfd
add support for caching pointer dependence queries. Nothing uses this yet
...
so it "can't" break anything. That said, it does appear to work.
llvm-svn: 60654
2008-12-07 08:50:20 +00:00
Chris Lattner
a79a341f1e
fix a bug I introduced in simplifycfg handling single entry phi
...
nodes. FoldSingleEntryPHINodes deletes the PHI, so there is no
need to delete it afterward.
llvm-svn: 60653
2008-12-07 07:22:45 +00:00
Owen Anderson
a5f2ce1ee3
Switch to top-down mode and fix a crasher this exposed caused by an error in the
...
live interval updating.
llvm-svn: 60652
2008-12-07 05:33:18 +00:00
Nick Lewycky
e277f75880
Fix typo, psuedo -> pseudo.
...
llvm-svn: 60651
2008-12-07 03:49:52 +00:00
Chris Lattner
35095d7722
Some internal refactoring to make it easier to cache results.
...
llvm-svn: 60650
2008-12-07 02:56:57 +00:00
Chris Lattner
ad82419b46
Introduce a new MemDep::getNonLocalPointerDependency
...
method. This will eventually take over load/store dep
queries from getNonLocalDependency. For now it works
fine, but is incredibly slow because it does no caching.
Lets not switch GVN to use it until that is fixed :)
llvm-svn: 60649
2008-12-07 02:15:47 +00:00
Chris Lattner
8e8a6b4ec3
push the "pointer case" up the analysis stack a bit. This causes
...
duplication of logic (in 2 places) to determine what pointer a
load/store touches. This will be addressed in a future commit.
llvm-svn: 60648
2008-12-07 01:50:16 +00:00
Chris Lattner
d14e6778c6
make clients have to know how to call getCallSiteDependencyFrom
...
instead of making getDependencyFrom do it.
llvm-svn: 60647
2008-12-07 01:21:14 +00:00
Chris Lattner
ddfcaff37c
rename some variables for consistency
...
llvm-svn: 60644
2008-12-07 00:39:19 +00:00
Chris Lattner
e4c5f66b3b
I love how using out of scope variables is not an error with GCC, no really I do.
...
llvm-svn: 60643
2008-12-07 00:38:27 +00:00
Chris Lattner
20b7d9667d
Rename getCallSiteDependency -> getCallSiteDependencyFrom to
...
emphasize the scanning and make it more similar to
getDependencyFrom
llvm-svn: 60642
2008-12-07 00:35:51 +00:00
Chris Lattner
dc8cf1fa91
a memdep query on a volatile load/store will always return
...
clobber with the current implementation. Instead of returning
a "precise clobber" just return a fuzzy one. This doesn't
matter to any clients anyway and should speed up analysis time
very very slightly.
llvm-svn: 60641
2008-12-07 00:28:02 +00:00
Chris Lattner
135a48d48b
don't bother touching volatile stores, they will just return clobber on
...
everything interesting anyway.
llvm-svn: 60640
2008-12-07 00:25:15 +00:00
Chris Lattner
a04521164c
remove the ability to get memdep info for vaarg. I don't think the
...
original impl was correct and noone actually makes the query anyway.
llvm-svn: 60639
2008-12-07 00:21:18 +00:00
Chris Lattner
3b71e8da68
make getDependencyFrom private.
...
llvm-svn: 60637
2008-12-07 00:16:50 +00:00
Chris Lattner
bd507e3e4d
improve a note.
...
llvm-svn: 60636
2008-12-07 00:15:10 +00:00
Chris Lattner
1fa53e3e56
some more PRE/GVN/DSE related notes.
...
llvm-svn: 60633
2008-12-06 22:52:12 +00:00
Chris Lattner
00104cf8f8
add a note
...
llvm-svn: 60632
2008-12-06 22:49:05 +00:00
Chris Lattner
a87ff83a83
some random notes.
...
llvm-svn: 60624
2008-12-06 19:28:22 +00:00
Nick Lewycky
d33c83b1af
Minor cleanup. Use dyn_cast, not isa/cast pairs. No functionality change.
...
llvm-svn: 60623
2008-12-06 17:57:05 +00:00
Evan Cheng
5c92d425a9
Clean up some ARM GV asm printing out; minor fixes to match what gcc does.
...
llvm-svn: 60621
2008-12-06 02:00:55 +00:00
Chris Lattner
022b15083b
Reimplement the inner loop of DSE. It now uniformly uses getDependence(),
...
doesn't do its own local caching, and is slightly more aggressive about
free/store dse (see testcase). This eliminates the last external client
of MemDep::getDependenceFrom().
llvm-svn: 60619
2008-12-06 00:53:22 +00:00
Dan Gohman
e2ee41d1d1
Don't use plain %x to print pointer values. I had changed it from %p
...
since %p isn't formatted consistently, but obviously plain %x is wrong.
PRIxPTR with a cast to uintptr_t would work here, but that requires
inconvenient build-system changes. %lu works on all current and
foreseable future hosts.
llvm-svn: 60616
2008-12-05 23:39:24 +00:00
Dale Johannesen
f4758579eb
Fix test to pass on Linux.
...
llvm-svn: 60614
2008-12-05 22:38:21 +00:00
Dale Johannesen
c6404f98b2
Forgot a file.
...
llvm-svn: 60609
2008-12-05 21:55:35 +00:00
Dale Johannesen
f5a072c388
Make LoopStrengthReduce smarter about hoisting things out of
...
loops when they can be subsumed into addressing modes.
Change X86 addressing mode check to realize that
some PIC references need an extra register.
(I believe this is correct for Linux, if not, I'm sure
someone will tell me.)
llvm-svn: 60608
2008-12-05 21:47:27 +00:00
Chris Lattner
2b5e1b5263
Make a few major changes to memdep and its clients:
...
1. Merge the 'None' result into 'Normal', making loads
and stores return their dependencies on allocations as Normal.
2. Split the 'Normal' result into 'Clobber' and 'Def' to
distinguish between the cases when memdep knows the value is
produced from when we just know if may be changed.
3. Move some of the logic for determining whether readonly calls
are CSEs into memdep instead of it being in GVN. This still
leaves verification that the arguments are hte same to GVN to
let it know about value equivalences in different contexts.
4. Change memdep's call/call dependency analysis to use
getModRefInfo(CallSite,CallSite) instead of doing something
very weak. This only really matters for things like DSA, but
someday maybe we'll have some other decent context sensitive
analyses :)
5. This reimplements the guts of memdep to handle the new results.
6. This simplifies GVN significantly:
a) readonly call CSE is slightly simpler
b) I eliminated the "getDependencyFrom" chaining for load
elimination and load CSE doesn't have to worry about
volatile (they are always clobbers) anymore.
c) GVN no longer does any 'lastLoad' caching, leaving it to
memdep.
7. The logic in DSE is simplified a bit and sped up. A potentially
unsafe case was eliminated.
llvm-svn: 60607
2008-12-05 21:04:20 +00:00
Dan Gohman
5e30c5b83b
Demangle and pretty-print symbols in internal backtraces. Patch by
...
Wesley Peck, with a few fixes by me.
llvm-svn: 60605
2008-12-05 20:12:48 +00:00
Anton Korobeynikov
30085a6f51
Revert invalid r60393. It causes llvm-gcc bootstrap fails in release builds.
...
See PR3160 for details
llvm-svn: 60604
2008-12-05 19:38:49 +00:00