| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
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: 60646
|
| |
|
|
| |
llvm-svn: 60645
|
| |
|
|
| |
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: 60638
|
| |
|
|
| |
llvm-svn: 60637
|
| |
|
|
| |
llvm-svn: 60636
|
| |
|
|
|
|
| |
Bug reported by Chris L.
llvm-svn: 60635
|
| |
|
|
|
|
|
| |
via the category's protocol list1s, with appropriate
diagnsostics and a test case.
llvm-svn: 60634
|
| |
|
|
| |
llvm-svn: 60633
|
| |
|
|
| |
llvm-svn: 60632
|
| |
|
|
| |
llvm-svn: 60631
|
| |
|
|
|
|
| |
type mimatches.
llvm-svn: 60630
|
| |
|
|
| |
llvm-svn: 60629
|
| |
|
|
| |
llvm-svn: 60628
|
| |
|
|
| |
llvm-svn: 60627
|
| |
|
|
| |
llvm-svn: 60626
|
| |
|
|
|
|
| |
testing declaration of properties in categories.
llvm-svn: 60625
|
| |
|
|
| |
llvm-svn: 60624
|
| |
|
|
| |
llvm-svn: 60623
|
| |
|
|
| |
llvm-svn: 60622
|
| |
|
|
| |
llvm-svn: 60621
|
| |
|
|
|
|
|
| |
attributes. Example would be, readonly, assign or
assign, copy, etc.
llvm-svn: 60620
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
template<typename T> void f(T x) {
g(x); // g is a dependent name, so don't even bother to look it up
g(); // error: g is not a dependent name
}
Note that when we see "g(", we build a CXXDependentNameExpr. However,
if none of the call arguments are type-dependent, we will force the
resolution of the name "g" and replace the CXXDependentNameExpr with
its result.
GCC actually produces a nice error message when you make this
mistake, and even offers to compile your code with -fpermissive. I'll
do the former next, but I don't plan to do the latter.
llvm-svn: 60618
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
| |
expressions, and value-dependent expressions. This permits us to parse
some template definitions.
This is not a complete solution; we're missing type- and
value-dependent computations for most of the expression types, and
we're missing checks for dependent types and type-dependent
expressions throughout Sema.
llvm-svn: 60615
|
| |
|
|
| |
llvm-svn: 60614
|
| |
|
|
| |
llvm-svn: 60611
|
| |
|
|
|
|
|
|
| |
property. It also checks for duplicate use of the same ivar
in two different iproperty implementations. It also caught
an error for a test case used in CodeGen :).
llvm-svn: 60610
|
| |
|
|
| |
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
|
| |
|
|
|
|
| |
type mismatch (related to my last patch).
llvm-svn: 60599
|
| |
|
|
|
|
|
| |
(instance/class) Method type checking between category and its implementation.
And a test case for all.
llvm-svn: 60598
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
parameters, with some semantic analysis:
- Template parameters are introduced into template parameter scope
- Complain about template parameter shadowing (except in Microsoft mode)
Note that we leak template parameter declarations like crazy, a
problem we'll remedy once we actually create proper declarations for
templates.
Next up: dependent types and value-dependent/type-dependent
expressions.
llvm-svn: 60597
|
| |
|
|
|
|
| |
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
|