| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
node) which should be appropriately mapped.
llvm-svn: 136910
|
|
|
|
|
|
| |
fixing some objc llvm-test crashes with LTO.
llvm-svn: 135324
|
|
|
|
|
|
| |
first, so there is not any need to map DebugLoc).
llvm-svn: 135205
|
|
|
|
| |
llvm-svn: 135191
|
|
|
|
|
|
|
| |
an MDNode. This saves a bunch of time and memory in the IR linker, e.g. when
doing LTO of files with debug info.
llvm-svn: 135172
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
patch brings numerous advantages to LLVM. One way to look at it
is through diffstat:
109 files changed, 3005 insertions(+), 5906 deletions(-)
Removing almost 3K lines of code is a good thing. Other advantages
include:
1. Value::getType() is a simple load that can be CSE'd, not a mutating
union-find operation.
2. Types a uniqued and never move once created, defining away PATypeHolder.
3. Structs can be "named" now, and their name is part of the identity that
uniques them. This means that the compiler doesn't merge them structurally
which makes the IR much less confusing.
4. Now that there is no way to get a cycle in a type graph without a named
struct type, "upreferences" go away.
5. Type refinement is completely gone, which should make LTO much MUCH faster
in some common cases with C++ code.
6. Types are now generally immutable, so we can use "Type *" instead
"const Type *" everywhere.
Downsides of this patch are that it removes some functions from the C API,
so people using those will have to upgrade to (not yet added) new API.
"LLVM 3.0" is the right time to do this.
There are still some cleanups pending after this, this patch is large enough
as-is.
llvm-svn: 134829
|
|
|
|
|
|
| |
-Wshorten-64-to-32 warning in Instructions.h.
llvm-svn: 133708
|
|
|
|
|
|
|
|
|
| |
"Reinstate r133435 and r133449 (reverted in r133499) now that the clang
self-hosted build failure has been fixed (r133512)."
Due to some additional warnings.
llvm-svn: 133700
|
|
|
|
|
|
| |
self-hosted build failure has been fixed (r133512).
llvm-svn: 133513
|
|
|
|
| |
llvm-svn: 133499
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change PHINodes to store simple pointers to their incoming basic blocks,
instead of full-blown Uses.
Note that this loses an optimization in SplitCriticalEdge(), because we
can no longer walk the use list of a BasicBlock to find phi nodes. See
the comment I removed starting "However, the foreach loop is slow for
blocks with lots of predecessors".
Extend replaceAllUsesWith() on a BasicBlock to also update any phi
nodes in the block's successors. This mimics what would have happened
when PHINodes were proper Users of their incoming blocks. (Note that
this only works if OldBB->replaceAllUsesWith(NewBB) is called when
OldBB still has a terminator instruction, so it still has some
successors.)
llvm-svn: 133435
|
|
|
|
| |
llvm-svn: 129932
|
|
|
|
| |
llvm-svn: 124099
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Take a flags argument instead of a bool. This makes
it more clear to the reader what it is used for.
2. Add a flag that says that "remapping a value not in the
map is ok".
3. Reimplement MapValue to share a bunch of code and be a lot
more efficient. For lookup failures, don't drop null values
into the map.
4. Using the new flag a bunch of code can vaporize in LinkModules
and LoopUnswitch, kill it.
No functionality change.
llvm-svn: 123058
|
|
|
|
| |
llvm-svn: 116390
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fix: add a flag to MapValue and friends which indicates whether
any module-level mappings are being made. In the common case of
inlining, no module-level mappings are needed, so MapValue doesn't
need to examine non-function-local metadata, which can be very
expensive in the case of a large module with really deep metadata
(e.g. a large C++ program compiled with -g).
This flag is a little awkward; perhaps eventually it can be moved
into the ClonedCodeInfo class.
llvm-svn: 112190
|
|
|
|
|
|
|
| |
except ...", it is causing *massive* performance regressions when building Clang
with itself (-O3 -g).
llvm-svn: 112158
|
|
|
|
|
|
| |
individual ...", which depends on r111922, which I am reverting.
llvm-svn: 112157
|
|
|
|
|
|
| |
instructions, not when remapping modules.
llvm-svn: 112091
|
|
|
|
|
|
|
|
| |
which does the same thing. This eliminates redundant code and
handles MDNodes better. MDNode linking still doesn't fully
work yet though.
llvm-svn: 111941
|
|
|
|
|
|
|
|
| |
that it avoids a lot of unnecessary cloning by avoiding remapping
MDNode cycles when none of the nodes in the cycle actually need to
be remapped. Also it uses the new temporary MDNode mechanism.
llvm-svn: 111922
|
|
|
|
|
|
| |
build of llvm-gcc.
llvm-svn: 109355
|
|
|
|
|
|
|
| |
it needs to be mapped to refer to the function in the new module, not the old
one. Fixes PR7700.
llvm-svn: 109353
|
|
|
|
| |
llvm-svn: 109132
|
|
|
|
|
|
| |
A non function local MDNode can have an operand which is cloned by MapValue().
llvm-svn: 109117
|
|
|
|
| |
llvm-svn: 107516
|
|
|
|
|
|
| |
Do not use "ValueMap" as a name for a local variable or an argument.
llvm-svn: 106698
|
|
|
|
| |
llvm-svn: 106598
|
|
|
|
|
|
|
|
|
|
|
| |
seeded in value map. This is not limited to function local metadata.
Failure to seed metdata in such cases causes troubles when in a cloned module, metadata from a new module refers to values in old module. Usually this results in mysterious bugpoint crashes. For example,
Checking to see if we can delete global inits: Unknown constant!
UNREACHABLE executed at /d/g/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp:904!
llvm-svn: 106592
|
|
|
|
| |
llvm-svn: 106529
|
|
|
|
|
|
| |
grows.
llvm-svn: 106528
|
|
|
|
|
|
| |
replationship with ADT/ValueMap.
llvm-svn: 101950
|
|
|
|
| |
llvm-svn: 101949
|
|
|
|
| |
llvm-svn: 94618
|
|
|
|
|
|
|
|
|
| |
ValueMapper.cpp ends up calling an out of line
__ZNK4llvm12PATypeHolder3getEv, which is a template and llvm-config
determines arbitrarily to use the one in libipo. This sucks, but
keeping the #include is a reasonable workaround.
llvm-svn: 94103
|
|
|
|
|
|
| |
on libipa?
llvm-svn: 94102
|
|
|
|
| |
llvm-svn: 94101
|
|
|
|
| |
llvm-svn: 94092
|
|
|
|
| |
llvm-svn: 94091
|
|
|
|
| |
llvm-svn: 93989
|
|
|
|
|
|
| |
llvm.dbg.declare intrinsics
llvm-svn: 93979
|
|
|
|
|
|
| |
because it points to an alloca instruction through metadata.
llvm-svn: 93757
|
|
|
|
|
|
|
| |
indirectbr, thus we don't need "blockaddr(@func, null)". Eliminate it
for simplicity.
llvm-svn: 85699
|
|
|
|
| |
llvm-svn: 85680
|
|
|
|
|
|
| |
crash on any clang tests.
llvm-svn: 85465
|
|
|
|
| |
llvm-svn: 85458
|
|
|
|
| |
llvm-svn: 85457
|
|
|
|
| |
llvm-svn: 85020
|
|
|
|
|
|
| |
New name is Metadata.h.
llvm-svn: 77370
|
|
|
|
| |
llvm-svn: 77366
|