| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 53450
|
| |
|
|
| |
llvm-svn: 53449
|
| |
|
|
| |
llvm-svn: 53448
|
| |
|
|
| |
llvm-svn: 53447
|
| |
|
|
|
|
|
|
| |
the min/max values for an integer type, compare against the min/max
values we can prove contain the input. This might be a tighter bound,
so this is general goodness.
llvm-svn: 53446
|
| |
|
|
|
|
| |
handle them in some code.
llvm-svn: 53445
|
| |
|
|
|
|
|
| |
was using the algorithm for folding unsigned comparisons which is
completely wrong. This has been broken since the signless types change.
llvm-svn: 53444
|
| |
|
|
|
|
|
|
|
|
|
| |
true)
This cause a regression in InstCombine/JavaCompare, which was doing the right
thing on accident. To handle the missed case, generalize the comparisons based
on masked bits a little bit to handle comparisons against the max value. For
example, we can now xform (slt i32 (and X, 4), 4) -> (setne i32 (and X, 4), 4)
llvm-svn: 53443
|
| |
|
|
| |
llvm-svn: 53440
|
| |
|
|
| |
llvm-svn: 53438
|
| |
|
|
|
|
|
| |
when working on legalizetypes. Both legalizetypes and legalizeops now
produce hte same code for CodeGen/ARM/fcopysign.ll.
llvm-svn: 53435
|
| |
|
|
| |
llvm-svn: 53434
|
| |
|
|
|
|
| |
other passes.
llvm-svn: 53415
|
| |
|
|
|
|
| |
to IndexedMap.
llvm-svn: 53414
|
| |
|
|
| |
llvm-svn: 53411
|
| |
|
|
|
|
| |
his work on legalizetypes.
llvm-svn: 53410
|
| |
|
|
|
|
|
|
|
| |
Lack of these caused a bootstrap failure with Fortran
on x86-64 with LegalizeTypes turned on. While there,
be nice to 16 bit machines and support expansion of
i32 too.
llvm-svn: 53408
|
| |
|
|
|
|
|
| |
Be nice to 16 bit machines by supporting FP_TO_XINT
expansion for these.
llvm-svn: 53407
|
| |
|
|
| |
llvm-svn: 53406
|
| |
|
|
|
|
|
| |
was doing there: FP_ROUND returns a float, not an
integer.
llvm-svn: 53405
|
| |
|
|
|
|
|
| |
in CreateStackStoreLoad is good enough for both
the source and destination types.
llvm-svn: 53404
|
| |
|
|
| |
llvm-svn: 53403
|
| |
|
|
|
|
| |
a ginormous value (eg: i128 -1).
llvm-svn: 53402
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rewrite the DeadArgumentElimination pass, to use a more explicit tracking of
dependencies between return values and/or arguments. Also make the handling of
arguments and return values the same.
The pass now looks properly inside returned structs, but only at the first
level (ie, not inside nested structs).
This version fixed a few more bugs and was cleaned up a bit. It now passes all
of LLVM's testing, and should still pass SPEC2006. There is still a minor bug
with regard to returning nested structs. Since there is currently nothing that
emits such IR, I will fix that in a seperate commit (partly because it requires
a non-trivial fix).
llvm-svn: 53400
|
| |
|
|
|
|
|
|
| |
the operand index of def machineoperand and at most one full scan of non-implicit operands is needed.
- Change local register allocator to use the new isRegReDefinedByTwoAddr instead of reinventing the wheel.
llvm-svn: 53394
|
| |
|
|
| |
llvm-svn: 53393
|
| |
|
|
|
|
| |
improves the time on instcombine from .31s to .22s
llvm-svn: 53390
|
| |
|
|
| |
llvm-svn: 53389
|
| |
|
|
| |
llvm-svn: 53388
|
| |
|
|
|
|
| |
though that would be nice and make sense :). Patch by Nathan Keynes!
llvm-svn: 53387
|
| |
|
|
| |
llvm-svn: 53386
|
| |
|
|
| |
llvm-svn: 53385
|
| |
|
|
|
|
| |
of all undefs into a single undef value.
llvm-svn: 53384
|
| |
|
|
|
|
| |
infinite recursion. part of PR2529
llvm-svn: 53383
|
| |
|
|
|
|
| |
constants by element without caring how they are formed.
llvm-svn: 53381
|
| |
|
|
|
|
| |
it for PR2529
llvm-svn: 53380
|
| |
|
|
|
|
|
|
| |
std::map with DenseMap, std::set with SmallPtrSet. This results in minor speed up.
- Some code clean up.
llvm-svn: 53379
|
| |
|
|
| |
llvm-svn: 53378
|
| |
|
|
|
|
|
|
|
|
|
| |
makes their special-case checks of use_size() less beneficial,
so remove them. This eliminates all but one use of use_size(),
which is in AssignTopologicalOrder, which uses it only once for
each node, and so can reasonably afford to recompute it, as
this allows the UsesSize field of SDNode to be removed
altogether.
llvm-svn: 53377
|
| |
|
|
|
|
| |
of examining every operand of every user.
llvm-svn: 53374
|
| |
|
|
|
|
|
| |
getMemOperand function to be moved into the base class as well
and made non-virtual.
llvm-svn: 53372
|
| |
|
|
|
|
|
| |
constant pool, if relocation model is not static. This directly maps to
the way how GCC works.
llvm-svn: 53370
|
| |
|
|
| |
llvm-svn: 53369
|
| |
|
|
| |
llvm-svn: 53368
|
| |
|
|
|
|
|
|
| |
def'd by the same instruction, but about the details of
the relationship.
llvm-svn: 53367
|
| |
|
|
| |
llvm-svn: 53365
|
| |
|
|
|
|
| |
I cannot test this target, let me know if it breaks!
llvm-svn: 53363
|
| |
|
|
|
|
| |
I cannot test this target, let me know if it breaks!
llvm-svn: 53362
|
| |
|
|
|
|
|
|
|
|
| |
class, and store IsVolatile and Alignment in a more compact form.
This makes AtomicSDNode slightly larger, but it shrinks LoadSDNode
and StoreSDNode, which are much more common and are the largest of
the SDNode subclasses. Also, this lets the isVolatile() and
getAlignment() accessors be non-virtual.
llvm-svn: 53361
|
| |
|
|
| |
llvm-svn: 53360
|