| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 60660
|
| |
|
|
|
|
|
| |
This would be much easier to do if the CommandLine library didn't use
global state. Global state is evil.
llvm-svn: 60659
|
| |
|
|
| |
llvm-svn: 60658
|
| |
|
|
| |
llvm-svn: 60657
|
| |
|
|
|
|
|
| |
Also includes a major refactoring. See documentation for more
information.
llvm-svn: 60656
|
| |
|
|
|
|
| |
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: 60637
|
| |
|
|
| |
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: 60614
|
| |
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 60601
|
| |
|
|
|
|
| |
like binary operators.
llvm-svn: 60600
|
| |
|
|
|
|
| |
constpool into a use, the rewrite happens at time of spill (not in VirtRegMap). Later on, if the GlobalBaseReg is spilled, the spiller can see the use uses GlobalBaseReg and do the right thing.
llvm-svn: 60596
|
| |
|
|
|
|
|
|
|
|
| |
V_SETALLONES into a load from constpool in order to fold into restores. This is not safe to do when PIC base is being used for a number of reasons:
1. GlobalBaseReg may have been spilled.
2. It may not be live at the use.
3. Spiller doesn't know this is happening so it won't prevent GlobalBaseReg from being spilled later (That by itself is a nasty hack. It's needed because we don't insert the reload until later).
llvm-svn: 60595
|
| |
|
|
| |
llvm-svn: 60594
|
| |
|
|
| |
llvm-svn: 60592
|
| |
|
|
|
|
|
|
| |
for(Type1 B = ...;;) { Type2 B ; ... }
is bad: code is hard to read and VS VS don't like it (it ignore the second declaration of B).
This patch fix the problem in tablegen. Please don't write code like this.
llvm-svn: 60590
|
| |
|
|
| |
llvm-svn: 60588
|
| |
|
|
|
|
|
| |
heretical from a STL standpoint, but is oh-so-useful for things that
can't throw exceptions when copied, like, well, everything in LLVM.
llvm-svn: 60587
|
| |
|
|
| |
llvm-svn: 60586
|
| |
|
|
| |
llvm-svn: 60585
|
| |
|
|
|
|
|
| |
changing the stack slots on an instruction, to keep them
consistent with the actual memory addresses.
llvm-svn: 60584
|
| |
|
|
|
|
|
|
|
|
| |
While they appear to provide a normal clobbering def, they don't
in the case of the awkward IMPLICIT_DEF+INSERT_SUBREG idiom. It
would be good to change INSERT_SUBREG; until then, this change
allows post-regalloc scheduling to cope in a mildly conservative
way.
llvm-svn: 60583
|
| |
|
|
|
|
| |
are a bit more complicate than I expected. Both declarations and weak definitions still need a stub indirection. However, the stubs are in data section and they contain the addresses of the actual symbols.
llvm-svn: 60571
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
aren't part of the test suite but are generally useful nonetheless, and can
be expanded later to test the backend against the actual Cell SPU system.
There's basically no other good place to put this code, so put it here for
the time being.
- vecoperations.c: Vector shuffles for all supported vector types, tests
for v16i8 add and multiply.
llvm-svn: 60566
|
| |
|
|
|
|
| |
faster by not requiring a flush().
llvm-svn: 60560
|