| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Aside from moving the actual files, this patch only updates the build
system and the source file comments under lib/... that are relevant.
I'll be updating other docs and other files in smaller subsequnet
commits.
While I've tried to test this, but it is entirely possible that there
will still be some build system fallout.
Also, note that I've not changed the library name itself: libLLVMCore.a
is still the library name. I'd be interested in others' opinions about
whether we should rename this as well (I think we should, just not sure
what it might break)
llvm-svn: 171359
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.
Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]
llvm-svn: 169131
|
|
|
|
|
|
|
|
| |
Instruction* corollary, which may be useful if a user
wishes to transform a ConstantExpr so that one of its operands is no longer constant.
llvm-svn: 168262
|
|
|
|
|
|
|
|
|
|
|
| |
It turns out that the operands of a Constant are not always themselves
Constant. For example, one of the operands of BlockAddress is
BasicBlock, which is not a Constant.
This should fix the dragonegg-x86_64-linux-gcc-4.6-test build which
broke in r168037.
llvm-svn: 168147
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For global variables that get the same value stored into them
everywhere, GlobalOpt will replace them with a constant. The problem is
that a thread-local GlobalVariable looks like one value (the address of
the TLS var), but is different between threads.
This patch introduces Constant::isThreadDependent() which returns true
for thread-local variables and constants which depend on them (e.g. a GEP
into a thread-local array), and teaches GlobalOpt not to track such
values.
llvm-svn: 168037
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously in a vector of pointers, the pointer couldn't be any pointer type,
it had to be a pointer to an integer or floating point type. This is a hassle
for dragonegg because the GCC vectorizer happily produces vectors of pointers
where the pointer is a pointer to a struct or whatever. Vector getelementptr
was restricted to just one index, but now that vectors of pointers can have
any pointer type it is more natural to allow arbitrary vector getelementptrs.
There is however the issue of struct GEPs, where if each lane chose different
struct fields then from that point on each lane will be working down into
unrelated types. This seems like too much pain for too little gain, so when
you have a vector struct index all the elements are required to be the same.
llvm-svn: 167828
|
|
|
|
|
|
| |
command. Bleh, sorry about this!
llvm-svn: 166596
|
|
|
|
| |
llvm-svn: 166591
|
|
|
|
| |
llvm-svn: 160159
|
|
|
|
|
|
|
|
|
| |
since then the entire expression must equal zero (similarly for other operations
with an absorbing element). With this in place a bunch of reassociate code for
handling constants is dead since it is all taken care of when linearizing. No
intended functionality change.
llvm-svn: 158398
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
topologies, it is quite possible for a leaf node to have huge multiplicity, for
example: x0 = x*x, x1 = x0*x0, x2 = x1*x1, ... rapidly gives a value which is x
raised to a vast power (the multiplicity, or weight, of x). This patch fixes
the computation of weights by correctly computing them no matter how big they
are, rather than just overflowing and getting a wrong value. It turns out that
the weight for a value never needs more bits to represent than the value itself,
so it is enough to represent weights as APInts of the same bitwidth and do the
right overflow-avoiding dance steps when computing weights. As a side-effect it
reduces the number of multiplies needed in some cases of large powers. While
there, in view of external uses (eg by the vectorizer) I made LinearizeExprTree
static, pushing the rank computation out into users. This is progress towards
fixing PR13021.
llvm-svn: 158358
|
|
|
|
|
|
| |
much. This gets us an addition 0.9% on 445.gobmk.
llvm-svn: 149952
|
|
|
|
| |
llvm-svn: 149849
|
|
|
|
| |
llvm-svn: 149848
|
|
|
|
|
|
|
|
|
| |
but with a critical fix to the SelectionDAG code that optimizes copies
from strings into immediate stores: the previous code was stopping reading
string data at the first nul. Address this by adding a new argument to
llvm::getConstantStringInfo, preserving the behavior before the patch.
llvm-svn: 149800
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
test to fail.
These are:
r149348
r149351
r149352
r149354
r149356
r149357
r149361
r149362
r149364
r149365
llvm-svn: 149470
|
|
|
|
|
|
| |
ConstantDataArray::getString instead.
llvm-svn: 149365
|
|
|
|
|
|
| |
methods and constant fold the clients to false.
llvm-svn: 149362
|
|
|
|
| |
llvm-svn: 149357
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
kicking in the big win of ConstantDataArray. As part of this, change
the implementation of GetConstantStringInfo in ValueTracking to work
with ConstantDataArray (and not ConstantArray) making it dramatically,
amazingly, more efficient in the process and renaming it to
getConstantStringInfo.
This keeps around a GetConstantStringInfo entrypoint that (grossly)
forwards to getConstantStringInfo and constructs the std::string
required, but existing clients should move over to
getConstantStringInfo instead.
llvm-svn: 149351
|
|
|
|
| |
llvm-svn: 149255
|
|
|
|
|
|
| |
to be formed whenever ConstantVector::get is used.
llvm-svn: 149226
|
|
|
|
|
|
|
| |
we should (theoretically optimize and codegen ConstantDataVector as well
as ConstantVector.
llvm-svn: 149116
|
|
|
|
| |
llvm-svn: 149077
|
|
|
|
|
|
|
|
|
| |
ConstantExpr::getWithOperandReplaced and ConstantExpr::replaceUsesOfWithOnConstant
in terms of ConstantExpr::getWithOperands. While we're at it,
make sure that ConstantExpr::getWithOperands covers all instructions: it was
missing insert/extractvalue.
llvm-svn: 149076
|
|
|
|
|
|
|
| |
more robust) ways to do what it was doing now. Also, add static methods
for decoding a ShuffleVector mask.
llvm-svn: 149028
|
|
|
|
|
|
|
|
|
|
| |
ConstantVector. Fix some outright bugs in the implementation of
ConstantArray and Constant struct, which would cause us to not make
one big UndefValue when asking for an array/struct with all undef
elements. Enhance Constant::isAllOnesValue to work with
ConstantDataVector.
llvm-svn: 149021
|
|
|
|
| |
llvm-svn: 149006
|
|
|
|
|
|
|
| |
helper method for the common operation of extracting an element
out of a constant aggregate.
llvm-svn: 148931
|
|
|
|
|
|
|
| |
"Introduce a new ConstantVector::getSplat constructor function to
simplify a really common case."
llvm-svn: 148924
|
|
|
|
|
|
| |
in asserts.
llvm-svn: 148910
|
|
|
|
|
|
|
|
| |
Original log:
Introduce a new ConstantVector::getSplat constructor function to
simplify a really common case.
llvm-svn: 148906
|
|
|
|
|
|
| |
simplify a really common case.
llvm-svn: 148901
|
|
|
|
|
|
|
| |
did something extremely surprising, and shadowed actually useful
implementations that had completely different behavior.
llvm-svn: 148898
|
|
|
|
| |
llvm-svn: 148805
|
|
|
|
|
|
|
|
| |
add a ConstantDataArray::getString method that corresponds to the (to be
removed) StringRef version of ConstantArray::get, but is dramatically more
efficient.
llvm-svn: 148804
|
|
|
|
| |
llvm-svn: 148802
|
|
|
|
|
|
|
|
| |
and clean up some other misc stuff. Unlike ConstantArray, we will
prefer to emit .fill directives for "String" arrays that all have
the same value, since they are denser than emitting a .ascii
llvm-svn: 148793
|
|
|
|
|
|
|
|
| |
same semantics as ConstantArray's but much more efficient because they
don't have to return std::string's. The ConstantArray methods will
eventually be removed.
llvm-svn: 148792
|
|
|
|
| |
llvm-svn: 148790
|
|
|
|
|
|
| |
Make some CDS methods public.
llvm-svn: 148785
|
|
|
|
|
|
| |
No need for 'getOperand' :)
llvm-svn: 148778
|
|
|
|
|
|
|
| |
classes, per PR1324. Not all of their helper functions are implemented,
nothing creates them, and the rest of the compiler doesn't handle them yet.
llvm-svn: 148741
|
|
|
|
|
|
|
|
| |
using OwningPtr. OwningPtr would barf when the densemap had to reallocate,
which doesn't appear to happen on the regression test suite, but obviously
happens in real life :)
llvm-svn: 148700
|
|
|
|
| |
llvm-svn: 148698
|
|
|
|
| |
llvm-svn: 148693
|
|
|
|
|
|
|
| |
Now that the type system rewrite has landed, there is no need for its
complexity and std::map'ness.
llvm-svn: 148691
|
|
|
|
| |
llvm-svn: 148578
|
|
|
|
|
|
| |
http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
llvm-svn: 146960
|
|
|
|
|
|
|
|
| |
"half precision" floating-point with a first-class type.
This patch adds basic IR support (but not codegen support).
llvm-svn: 146786
|