| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 73719
|
| |
|
|
| |
llvm-svn: 73707
|
| |
|
|
| |
llvm-svn: 73620
|
| |
|
|
|
|
| |
in a comment.
llvm-svn: 70882
|
| |
|
|
|
|
|
| |
to make the copy constructor and destructor protected, and corresponding
adjustments to the unittests.
llvm-svn: 70644
|
| |
|
|
|
|
| |
problem from instcombine.
llvm-svn: 69151
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
which are effectively smart pointers to Value*'s. They are both very light
weight and simple, and react to values being destroyed or being RAUW'd.
WeakVN does a best effort to follow a value around, including through RAUW
operations and will get nulled out of the value is destroyed. This is useful
for the eventual "metadata that references a value" work, because it is a
reference to a value that does not show up on its use_* list.
AssertingVH is a pointer that compiles down to a dumb raw pointer when
assertions are disabled. When enabled, it emits an assertion if the
pointed-to value is destroyed while it is still being referenced. This
is very useful for Maps and other things, and should have caught the recent
bugs in CallGraph and Reassociate, for example.
llvm-svn: 68149
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
access each with a fixed negative index from op_end().
This has two important implications:
- getUser() will work faster, because there are less iterations
for the waymarking algorithm to perform. This is important
when running various analyses that want to determine callers
of basic blocks.
- getSuccessor() now runs faster, because the indirection via OperandList
is not necessary: Uses corresponding to the successors are at fixed
offset to "this".
The price we pay is the slightly more complicated logic in the operator
User::delete, as it has to pick up the information whether it has to free
the memory of an original unconditional BranchInst or a BranchInst that
was originally conditional, but has been shortened to unconditional.
I was not able to come up with a nicer solution to this problem. (And
rest assured, I tried *a lot*).
Similar reorderings will follow for InvokeInst and CallInst. After that
some optimizations to pred_iterator and CallSite will fall out naturally.
llvm-svn: 66815
|
| |
|
|
|
|
| |
non-recursive.
llvm-svn: 61479
|
| |
|
|
|
|
| |
NDEBUG is unset and -debug is passed.
llvm-svn: 60986
|
| |
|
|
| |
llvm-svn: 60429
|
| |
|
|
| |
llvm-svn: 60405
|
| |
|
|
|
|
|
|
|
|
|
| |
pointer bitcasts and GEP's", and centralize the
logic in Value::getUnderlyingObject. The
difference with stripPointerCasts is that
stripPointerCasts only strips GEPs if all
indices are zero, while getUnderlyingObject
strips GEPs no matter what the indices are.
llvm-svn: 56922
|
| |
|
|
| |
llvm-svn: 56625
|
| |
|
|
| |
llvm-svn: 56349
|
| |
|
|
|
|
| |
untested, Use::swap() is definitely not done yet
llvm-svn: 56348
|
| |
|
|
|
|
| |
compilation warnings with -Wshadow.
llvm-svn: 53970
|
| |
|
|
| |
llvm-svn: 52587
|
| |
|
|
|
|
| |
predecessor BB if any of its operands are defined but not used in BB. The transformation will prevent the operand from being sunk into the use block.
llvm-svn: 52244
|
| |
|
|
|
|
|
| |
operator new() referring to the static initTags function, which has to be in the
same linkage unit as any file including User.h.
llvm-svn: 51136
|
| |
|
|
| |
llvm-svn: 50836
|
| |
|
|
|
|
| |
instead?)
llvm-svn: 50775
|
| |
|
|
| |
llvm-svn: 50483
|
| |
|
|
| |
llvm-svn: 50465
|
| |
|
|
| |
llvm-svn: 47796
|
| |
|
|
| |
llvm-svn: 47425
|
| |
|
|
|
|
| |
Now, we have very first multiple return value testcase!
llvm-svn: 47424
|
| |
|
|
|
|
| |
annoying warnings.
llvm-svn: 47367
|
| |
|
|
| |
llvm-svn: 45418
|
| |
|
|
|
|
|
| |
_sabre_: it has a major problem: by the time ~Value is run, all of the "parts" of the derived classes have been destroyed
_sabre_: the vtable lives to fight another day
llvm-svn: 44760
|
| |
|
|
| |
llvm-svn: 44756
|
| |
|
|
|
|
| |
2007-11-19-InlineAsm.ll
llvm-svn: 44755
|
| |
|
|
| |
llvm-svn: 44747
|
| |
|
|
|
|
| |
of comparing begin() and end().
llvm-svn: 42585
|
| |
|
|
| |
llvm-svn: 42444
|
| |
|
|
| |
llvm-svn: 41205
|
| |
|
|
| |
llvm-svn: 40989
|
| |
|
|
| |
llvm-svn: 35195
|
| |
|
|
| |
llvm-svn: 34917
|
| |
|
|
|
|
|
| |
causes it to require no allocations and no symtab lookups in the common
case. This speeds up instcombine 9.2% on 447.dealII.
llvm-svn: 34324
|
| |
|
|
| |
llvm-svn: 34310
|
| |
|
|
|
|
| |
used to avoid std::string allocations in common cases.
llvm-svn: 34232
|
| |
|
|
| |
llvm-svn: 34197
|
| |
|
|
|
|
|
|
|
| |
std::map<std::string, Value*>
as its main datastructure. There are many improvements yet to be made, but
this speeds up opt --std-compile-opts on 447.dealII by 7.3%.
llvm-svn: 34193
|
| |
|
|
| |
llvm-svn: 34182
|
| |
|
|
| |
llvm-svn: 34174
|
| |
|
|
| |
llvm-svn: 34171
|
| |
|
|
|
|
|
|
| |
remove+insert.
Make insert/remove assert if used incorrectly instead of returning a bool.
llvm-svn: 33988
|
| |
|
|
|
|
|
|
|
|
| |
This patch replaces the SymbolTable class with ValueSymbolTable which does
not support types planes. This means that all symbol names in LLVM must now
be unique. The patch addresses the necessary changes to deal with this and
removes code no longer needed as a result. This completes the bulk of the
changes for this PR. Some cleanup patches will follow.
llvm-svn: 33918
|
| |
|
|
|
|
|
|
|
| |
Take an incremental step towards type plane elimination. This change
separates types from values in the symbol tables by finally making use
of the TypeSymbolTable class. This yields more natural interfaces for
dealing with types and unclutters the SymbolTable class.
llvm-svn: 32956
|