| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
a bit surprising, as the class is almost entirely abstracted away from
any particular IR, however it encodes the comparsion predicates which
mutate ranges as ICmp predicate codes. This is reasonable as they're
used for both instructions and constants. Thus, it belongs in the IR
library with instructions and constants.
llvm-svn: 202838
|
|
|
|
|
|
| |
directly, and remove the macro.
llvm-svn: 202612
|
|
|
|
| |
llvm-svn: 193795
|
|
|
|
|
|
| |
the case [x, INT_MIN) was not handled optimally
llvm-svn: 193694
|
|
|
|
| |
llvm-svn: 193523
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 186095
|
|
|
|
|
|
|
| |
Arithmetic on ConstantRanges creates a lot of large temporary APInts that
benefit from move semantics.
llvm-svn: 186091
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.
There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.
The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.
I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).
I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.
llvm-svn: 171366
|
|
|
|
| |
llvm-svn: 160643
|
|
|
|
|
|
|
|
| |
It is optimal at least up to 7 bits (I've tested all such cases)
This change to truncate() allows a little simplification to the multiplication code,
and it also makes multiplication optimal :)
llvm-svn: 160512
|
|
|
|
| |
llvm-svn: 160368
|
|
|
|
| |
llvm-svn: 160317
|
|
|
|
|
|
|
|
| |
full sets.
Make it always return APInts with the same bitwidth for the same ConstantRange bitwidth to simply clients
llvm-svn: 160294
|
|
|
|
| |
llvm-svn: 159352
|
|
|
|
| |
llvm-svn: 159319
|
|
|
|
|
|
| |
this fixes the missed optimization I was seeing in the CorrelatedValuePropagation pass
llvm-svn: 157032
|
|
|
|
| |
llvm-svn: 149967
|
|
|
|
|
|
| |
if-statement by turning it into an assert. No functionality change.
llvm-svn: 147474
|
|
|
|
| |
llvm-svn: 145122
|
|
|
|
|
|
|
|
|
|
|
|
| |
assert(!"error message");
To:
assert(0 && "error message");
which is more consistant across the code base.
llvm-svn: 140234
|
|
|
|
| |
llvm-svn: 136218
|
|
|
|
| |
llvm-svn: 133648
|
|
|
|
|
|
|
|
| |
zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method
trunc(), to be const and to return a new value instead of modifying the
object in place.
llvm-svn: 121120
|
|
|
|
|
|
| |
also fixes PR8250.
llvm-svn: 114972
|
|
|
|
|
|
| |
teach LazyValueInfo to use them.
llvm-svn: 113196
|
|
|
|
|
|
|
|
|
| |
Fix zeroExtend and signExtend to support empty sets, and to return the smallest
possible result set which contains the extension of each element in their
inputs. For example zext i8 [100, 10) to i16 is now [0, 256), not i16 [100, 10)
which contains 63446 members.
llvm-svn: 113187
|
|
|
|
|
|
|
|
|
| |
- remove ashr which never worked.
- fix lshr and shl and add tests.
- remove dead function "intersect1Wrapped".
- add a new sub method to subtract ranges, with test.
llvm-svn: 110861
|
|
|
|
| |
llvm-svn: 110505
|
|
|
|
| |
llvm-svn: 110504
|
|
|
|
| |
llvm-svn: 110493
|
|
|
|
|
|
| |
wrapping that Duncan pointed out.
llvm-svn: 94547
|
|
|
|
| |
llvm-svn: 94507
|
|
|
|
| |
llvm-svn: 94506
|
|
|
|
| |
llvm-svn: 92638
|
|
|
|
| |
llvm-svn: 86987
|
|
|
|
|
|
| |
quite tricky.
llvm-svn: 86986
|
|
|
|
| |
llvm-svn: 86549
|
|
|
|
|
|
| |
update all code that this affects.
llvm-svn: 79830
|
|
|
|
|
|
|
| |
return the smallest union of two ranges instead of just any range that happens
to contain the union.
llvm-svn: 76360
|
|
|
|
|
|
|
|
| |
all values belonging to the intersection will belong to the resulting range.
The former was inconsistent about that point (either way is fine, just pick
one.) This is part of PR4545.
llvm-svn: 76289
|
|
|
|
|
|
| |
again to Daniel Dunbar and KLEE!
llvm-svn: 75449
|
|
|
|
|
|
| |
Found by Daniel Dunbar and KLEE.
llvm-svn: 75448
|
|
|
|
|
|
| |
generally return Full on all wrapped inputs. "Fixes" PR4545.
llvm-svn: 75444
|
|
|
|
|
|
|
| |
large as the full set, only those one size smaller. Thanks to Daniel Dunbar
who found this bug using Klee!
llvm-svn: 75443
|
|
|
|
| |
llvm-svn: 75413
|
|
|
|
| |
llvm-svn: 75410
|
|
|
|
|
|
|
|
| |
A full set is a constant range that represents any number. If you take the
umax of that and [5, 10) you end up with [5, INT_MAX] because the values less
than 5 would be umax's against a value which is at least 5.
llvm-svn: 75372
|
|
|
|
| |
llvm-svn: 75366
|
|
|
|
|
|
|
|
|
|
| |
per icmp predicate out of predsimplify and into ConstantRange.
Add another utility method that determines whether one range is a subset of
another. Combine with the former to determine whether icmp pred range, range
is known to be true or not.
llvm-svn: 75357
|
|
|
|
|
|
|
|
| |
merge the new functionality and unittests into ConstantRange. Thanks to
Nick Lewycky for pointing out that it isn't necessary to have two separate
classes here.
llvm-svn: 75191
|