| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
what ConstantRange does for unsigned integers. Factor out a
common base class for common functionality.
Add some new functions for performing arithmetic on constant
ranges. Some of these are currently just stubbed out with
conservative implementations.
Add unittests for ConstantRange and ConstantSignedRange.
llvm-svn: 75177
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
use raw_ostream instead of std::ostream. Among other goodness,
this speeds up llvm-dis of kc++ with a release build from 0.85s
to 0.49s (88% faster).
Other interesting changes:
1) This makes Value::print be non-virtual.
2) AP[S]Int and ConstantRange can no longer print to ostream directly,
use raw_ostream instead.
3) This fixes a bug in raw_os_ostream where it didn't flush itself
when destroyed.
4) This adds a new SDNode::print method, instead of only allowing "dump".
A lot of APIs have both std::ostream and raw_ostream versions, it would
be useful to go through and systematically anihilate the std::ostream
versions.
This passes dejagnu, but there may be minor fallout, plz let me know if
so and I'll fix it.
llvm-svn: 55263
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
returning an std::string by value, it fills in a SmallString/SmallVector
passed in. This significantly reduces string thrashing in some cases.
More specifically, this:
- Adds an operator<< and a print method for APInt that allows you to
directly send them to an ostream.
- Reimplements APInt::toString to be much simpler and more efficient
algorithmically in addition to not thrashing strings quite as much.
This speeds up llvm-dis on kc++ by 7%, and may also slightly speed up the
asmprinter. This also fixes a bug I introduced into the asmwriter in a
previous patch w.r.t. alias printing.
llvm-svn: 54873
|
|
|
|
| |
llvm-svn: 51606
|
|
|
|
| |
llvm-svn: 45418
|
|
|
|
| |
llvm-svn: 39857
|
|
|
|
| |
llvm-svn: 39851
|
|
|
|
| |
llvm-svn: 37532
|
|
|
|
| |
llvm-svn: 36475
|
|
|
|
| |
llvm-svn: 35960
|
|
|
|
| |
llvm-svn: 35733
|
|
|
|
| |
llvm-svn: 35534
|
|
|
|
| |
llvm-svn: 35056
|
|
|
|
| |
llvm-svn: 34833
|
|
|
|
|
|
|
|
| |
are not needed as the results are the same with or without it.
Patch by Nicholas Lewycky.
llvm-svn: 34782
|
|
|
|
|
|
| |
interface not depend on Type or ICmpInst.
llvm-svn: 34761
|
|
|
|
| |
llvm-svn: 15825
|
|
|
|
| |
llvm-svn: 14838
|
|
|
|
| |
llvm-svn: 14622
|
|
|
|
| |
llvm-svn: 12539
|
|
|
|
| |
llvm-svn: 12534
|
|
|
|
| |
llvm-svn: 10800
|