| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
type resolution. Unfortunately it doesn't help.
Also delete some dead debugging code.
llvm-svn: 11237
|
|
|
|
| |
llvm-svn: 11233
|
|
|
|
|
|
|
| |
consistent across the various type classes, we can factor out a LOT more
almost-identical code. Also, add a couple of temporary statistics.
llvm-svn: 11232
|
|
|
|
|
|
|
| |
all of the ad-hoc storage of contained types. This allows getContainedType to
not be virtual, and allows us to entirely delete the TypeIterator class.
llvm-svn: 11230
|
|
|
|
| |
llvm-svn: 11229
|
|
|
|
|
|
| |
getElementTypes() is gone.
llvm-svn: 11228
|
|
|
|
| |
llvm-svn: 11224
|
|
|
|
| |
llvm-svn: 11222
|
|
|
|
|
|
|
|
|
|
|
| |
contains the type we are looking for, just search the immediately used types.
We can only do this because we keep the "current" type in the nesting level
as we decrement upreferences.
This change speeds up the testcase in PR224 from 50.4s to 22.08s, not
too shabby.
llvm-svn: 11221
|
|
|
|
|
|
|
|
|
| |
non-abstract
type from containing one. This speeds up the asmparser on the testcase in PR224 from
61->50s.
llvm-svn: 11220
|
|
|
|
|
|
|
|
| |
the Virt2PhysRegMap std::map with an std::vector. This speeds up the
register allocator another (almost) 40%, from .72->.45s in a release build
of LLC on 253.perlbmk.
llvm-svn: 11219
|
|
|
|
| |
llvm-svn: 11218
|
|
|
|
|
|
| |
speeds up livevar from .48/.32s -> .45/.31s in LLC on perlbmk
llvm-svn: 11217
|
|
|
|
|
|
|
| |
This speeds up live variables a lot, from .60/.39s -> .47/.26s in LLC, for
the first/second pass respectively.
llvm-svn: 11216
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
from physical registers, and they are always dense, it makes sense to not have
a ton of RBtree overhead. This change speeds up regalloclocal about ~30% on
253.perlbmk, from .35s -> .27s in the JIT (in LLC, it goes from .74 -> .55).
Now live variable analysis is the slowest codegen pass. Of course it doesn't
help that we have to run it twice, because regalloclocal doesn't update it,
but even if it did it would be the slowest pass (now it's just the 2x slowest
pass :(
llvm-svn: 11215
|
|
|
|
|
|
|
|
|
|
|
| |
1. The "work" was not in the assert, so it was punishing the optimized release
2. getNamedFunction is _very_ expensive in large programs. It is not designed
to be used like this, and was taking 7% of the execution time of the code
generator on perlbmk.
Since the assert "can never fail", I'm just killing it.
llvm-svn: 11214
|
|
|
|
|
|
| |
strip it off.
llvm-svn: 11213
|
|
|
|
|
|
| |
Have I ever mentioned how much I _hate_ constantpointerrefs?
llvm-svn: 11212
|
|
|
|
| |
llvm-svn: 11210
|
|
|
|
|
|
| |
even if it is wierd in some way.
llvm-svn: 11207
|
|
|
|
| |
llvm-svn: 11206
|
|
|
|
| |
llvm-svn: 11205
|
|
|
|
|
|
| |
allow 'except' instead of 'unwind' here though.
llvm-svn: 11203
|
|
|
|
|
|
| |
'unwind' dest
llvm-svn: 11202
|
|
|
|
| |
llvm-svn: 11200
|
|
|
|
| |
llvm-svn: 11199
|
|
|
|
|
|
| |
This fixed PR16 "[lowerinvoke] The -lowerinvoke pass does not insert calls to setjmp/longjmp"
llvm-svn: 11195
|
|
|
|
|
|
| |
emitGlobals
llvm-svn: 11191
|
|
|
|
| |
llvm-svn: 11190
|
|
|
|
|
|
|
| |
This causes the JIT, or LLC'd program to print out a nice message, explaining
WHY the program aborted.
llvm-svn: 11184
|
|
|
|
| |
llvm-svn: 11179
|
|
|
|
|
|
|
|
|
| |
removeDeadNodes is called, only call it at the end of the pass being run.
This saves 1.3 seconds running DSA on 177.mesa (5.3->4.0s), which is
pretty big. This is only possible because of the automatic garbage
collection done on forwarding nodes.
llvm-svn: 11178
|
|
|
|
| |
llvm-svn: 11177
|
|
|
|
| |
llvm-svn: 11176
|
|
|
|
|
|
|
|
|
| |
DSGraphs while they are forwarding. When the last reference to the forwarding
node is dropped, the forwarding node is autodeleted. This should simplify
removeTriviallyDead nodes, and is only (efficiently) possible because we are
using an ilist of dsnodes now.
llvm-svn: 11175
|
|
|
|
|
|
| |
G == 0
llvm-svn: 11174
|
|
|
|
| |
llvm-svn: 11173
|
|
|
|
| |
llvm-svn: 11171
|
|
|
|
|
|
|
| |
Rename stats from dsnode -> dsa
Add a new stat
llvm-svn: 11167
|
|
|
|
| |
llvm-svn: 11166
|
|
|
|
| |
llvm-svn: 11157
|
|
|
|
| |
llvm-svn: 11151
|
|
|
|
|
|
| |
of the virtual register to certain functions.
llvm-svn: 11143
|
|
|
|
|
|
| |
keeps finding more code motion opportunities now that the dominators are correct!
llvm-svn: 11142
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
slots each. As a concequence they get numbered as 0, 2, 4 and so
on. The first slot is used for operand uses and the second for
defs. Here's an example:
0: A = ...
2: B = ...
4: C = A + B ;; last use of A
The live intervals should look like:
A = [1, 5)
B = [3, x)
C = [5, y)
llvm-svn: 11141
|
|
|
|
| |
llvm-svn: 11140
|
|
|
|
| |
llvm-svn: 11139
|
|
|
|
|
|
|
|
| |
The problem is that the dominator update code didn't "realize" that it's
possible for the newly inserted basic block to dominate anything. Because
it IS possible, stuff was getting updated wrong.
llvm-svn: 11137
|
|
|
|
|
|
| |
access. Rather we only have to do it on the creation of the interval.
llvm-svn: 11135
|
|
|
|
|
|
|
|
|
|
| |
complete rewrite of load-vn will make it a bit faster. This changes speeds up
the gcse pass (which uses load-vn) from 25.45s to 0.42s on the testcase in
PR209.
I've also verified that this gives the exact same results as the old one.
llvm-svn: 11132
|