| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 125987
|
| |
|
|
| |
llvm-svn: 125845
|
| |
|
|
| |
llvm-svn: 125828
|
| |
|
|
|
|
|
| |
Add getAllOnesValue of FP numbers to Constants and APFloat.
Add more tests.
llvm-svn: 125776
|
| |
|
|
| |
llvm-svn: 125537
|
| |
|
|
|
|
| |
builders unhappy.
llvm-svn: 125504
|
| |
|
|
|
|
| |
idiom. Change various clients to simplify their code.
llvm-svn: 125487
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
It caused a crash in MultiSource/Benchmarks/Bullet.
Opt hit an assertion with "opt -std-compile-opts" because
Constant::getAllOnesValue doesn't know how to handle floats.
This patch added a test to reproduce the problem and a check that the
destination vector is of integer type.
Thank you Benjamin!
llvm-svn: 125459
|
| |
|
|
|
|
|
| |
Add more folding patterns to constant expressions of vector selects and vector
bitcasts.
llvm-svn: 125393
|
| |
|
|
|
|
| |
flag. Noticed by Jin Gu Kang!
llvm-svn: 125366
|
| |
|
|
|
|
| |
as other constantexpr flags, reducing redundancy.
llvm-svn: 125365
|
| |
|
|
|
|
|
| |
for NSW/NUW binops to follow the pattern of exact binops. This
allows someone to use Builder.CreateAdd(x, y, "tmp", MaybeNUW);
llvm-svn: 125270
|
| |
|
|
| |
llvm-svn: 125190
|
| |
|
|
| |
llvm-svn: 125047
|
| |
|
|
|
|
| |
Factor some code better.
llvm-svn: 125006
|
| |
|
|
|
|
|
|
| |
instcombine xform to exercise this.
Nothing forms exact udivs yet though. This is progress on PR8862
llvm-svn: 124992
|
| |
|
|
| |
llvm-svn: 124659
|
| |
|
|
| |
llvm-svn: 124655
|
| |
|
|
| |
llvm-svn: 124557
|
| |
|
|
| |
llvm-svn: 124556
|
| |
|
|
|
|
|
| |
This is the one where one of the branches of the select is another select on
the same condition.
llvm-svn: 124547
|
| |
|
|
| |
llvm-svn: 124375
|
| |
|
|
| |
llvm-svn: 124330
|
| |
|
|
|
|
| |
it. No functionality change!
llvm-svn: 124286
|
| |
|
|
| |
llvm-svn: 124209
|
| |
|
|
|
|
| |
dereferencable, noticed by inspection.
llvm-svn: 124085
|
| |
|
|
|
|
|
|
| |
While here, I'd like to complain about how vector is not an aggregate type
according to llvm::Type::isAggregateType(), but they're listed under aggregate
types in the LangRef and zero vectors are stored as ConstantAggregateZero.
llvm-svn: 123956
|
| |
|
|
|
|
|
| |
The PassManager did not implement the transitivity of requiredTransitive. This
was unnoticed since 2006.
llvm-svn: 123942
|
| |
|
|
| |
llvm-svn: 123879
|
| |
|
|
| |
llvm-svn: 123748
|
| |
|
|
| |
llvm-svn: 123747
|
| |
|
|
| |
llvm-svn: 123743
|
| |
|
|
| |
llvm-svn: 123726
|
| |
|
|
| |
llvm-svn: 123623
|
| |
|
|
|
|
| |
User::dropHungOffUses().
llvm-svn: 123580
|
| |
|
|
|
|
| |
User.cpp.
llvm-svn: 123575
|
| |
|
|
| |
llvm-svn: 123529
|
| |
|
|
|
|
|
| |
static_cast from Constant* to Value* has to adjust the "this" pointer.
This is groundwork for PR889.
llvm-svn: 123435
|
| |
|
|
|
|
|
|
|
|
|
|
| |
While there, I noticed that the transform "undef >>a X -> undef" was wrong.
For example if X is 2 then the top two bits must be equal, so the result can
not be anything. I fixed this in the constant folder as well. Also, I made
the transform for "X << undef" stronger: it now folds to undef always, even
though X might be zero. This is in accordance with the LangRef, but I must
admit that it is fairly aggressive. Also, I added "i32 X << 32 -> undef"
following the LangRef and the constant folder, likewise fairly aggressive.
llvm-svn: 123417
|
| |
|
|
| |
llvm-svn: 123358
|
| |
|
|
|
|
|
|
|
|
|
| |
"this" pointer for any subclass of User, you could static_cast it to
User* and then reinterpret_cast that to Use* to get the end of the
operand list. This isn't a safe assumption in general, because the
static_cast might adjust the "this" pointer. Fixed by having these
OperandTraits classes take an extra template parameter, which is the
subclass of User. This is groundwork for PR889.
llvm-svn: 123235
|
| |
|
|
| |
llvm-svn: 123078
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a unnamed_addr bit to global variables and functions. This will be used
to indicate that the address is not significant and therefore the constant
or function can be merged with others.
If an optimization pass can show that an address is not used, it can set this.
Examples of things that can have this set by the FE are globals created to
hold string literals and C++ constructors.
Adding unnamed_addr to a non-const global should have no effect unless
an optimization can transform that global into a constant.
Aliases are not allowed to have unnamed_addr since I couldn't figure
out any use for it.
llvm-svn: 123063
|
| |
|
|
|
|
| |
every BranchInst has a fixed number of operands.
llvm-svn: 123027
|
| |
|
|
| |
llvm-svn: 122911
|
| |
|
|
| |
llvm-svn: 122809
|
| |
|
|
|
|
| |
so that Dominators.h is *just* domtree. Also prune #includes a bit.
llvm-svn: 122714
|
| |
|
|
| |
llvm-svn: 122613
|
| |
|
|
| |
llvm-svn: 122571
|
| |
|
|
|
|
|
| |
new gcc warning that complains on self-assignments and
self-initializations.
llvm-svn: 122458
|