| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
pipeline model.
llvm-svn: 60733
|
|
|
|
|
|
| |
for spotting these!
llvm-svn: 60728
|
|
|
|
|
|
|
| |
jump threading has been shown to only expose problems not
have bugs itself. I'm sure it's completely bug free! ;-)
llvm-svn: 60725
|
|
|
|
| |
llvm-svn: 60711
|
|
|
|
| |
llvm-svn: 60707
|
|
|
|
| |
llvm-svn: 60705
|
|
|
|
|
|
| |
Thanks Duncan!
llvm-svn: 60702
|
|
|
|
| |
llvm-svn: 60701
|
|
|
|
| |
llvm-svn: 60697
|
|
|
|
|
|
|
|
|
| |
and use it in x86 address mode folding. Also, make
getRegForValue return 0 for illegal types even if it has a
ValueMap for them, because Argument values are put in the
ValueMap. This fixes PR3181.
llvm-svn: 60696
|
|
|
|
|
|
|
|
|
| |
track of whether the CachedNonLocalPointerInfo for a block is specific
to a block. If so, just return it without any pred scanning. This is
good for a 6% speedup on GVN (when it uses this lookup method, which
it doesn't right now).
llvm-svn: 60695
|
|
|
|
| |
llvm-svn: 60694
|
|
|
|
|
|
|
| |
remove some more 64-bit divs and rems from the StructLayout
ctor.
llvm-svn: 60692
|
|
|
|
|
|
| |
as suggested in PR3182.
llvm-svn: 60691
|
|
|
|
| |
llvm-svn: 60690
|
|
|
|
| |
llvm-svn: 60689
|
|
|
|
| |
llvm-svn: 60687
|
|
|
|
| |
llvm-svn: 60684
|
|
|
|
| |
llvm-svn: 60683
|
|
|
|
| |
llvm-svn: 60679
|
|
|
|
|
|
| |
useful.
llvm-svn: 60674
|
|
|
|
| |
llvm-svn: 60673
|
|
|
|
| |
llvm-svn: 60672
|
|
|
|
|
|
| |
so it "can't" break anything. That said, it does appear to work.
llvm-svn: 60654
|
|
|
|
|
|
|
| |
nodes. FoldSingleEntryPHINodes deletes the PHI, so there is no
need to delete it afterward.
llvm-svn: 60653
|
|
|
|
|
|
| |
live interval updating.
llvm-svn: 60652
|
|
|
|
| |
llvm-svn: 60651
|
|
|
|
| |
llvm-svn: 60650
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
instead of making getDependencyFrom do it.
llvm-svn: 60647
|
|
|
|
| |
llvm-svn: 60644
|
|
|
|
|
|
| |
I do.
llvm-svn: 60643
|
|
|
|
|
|
|
|
| |
emphasize the scanning and make it more similar to
getDependencyFrom
llvm-svn: 60642
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
everything interesting anyway.
llvm-svn: 60640
|
|
|
|
|
|
| |
original impl was correct and noone actually makes the query anyway.
llvm-svn: 60639
|
|
|
|
| |
llvm-svn: 60636
|
|
|
|
| |
llvm-svn: 60633
|
|
|
|
| |
llvm-svn: 60632
|
|
|
|
| |
llvm-svn: 60624
|
|
|
|
| |
llvm-svn: 60623
|
|
|
|
| |
llvm-svn: 60621
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 60609
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
Wesley Peck, with a few fixes by me.
llvm-svn: 60605
|
|
|
|
|
|
| |
See PR3160 for details
llvm-svn: 60604
|