| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 76249
|
|
|
|
|
|
|
|
|
| |
in a convenient manner, factoring out some common code from
InstructionCombining and ValueTracking. Move the contents of
BinaryOperators.h into Operator.h and use Operator to generalize them
to support ConstantExprs as well as Instructions.
llvm-svn: 76232
|
|
|
|
|
|
| |
AllocaInst and MallocInst.
llvm-svn: 75863
|
|
|
|
|
|
|
| |
operands; it's possible to end up with a constant-foldable operand to
most instructions, even those which can't trap.
llvm-svn: 75845
|
|
|
|
| |
llvm-svn: 75703
|
|
|
|
|
|
|
|
|
| |
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").
llvm-svn: 75640
|
|
|
|
| |
llvm-svn: 75586
|
|
|
|
| |
llvm-svn: 75539
|
|
|
|
|
|
|
|
| |
(I think it's reasonably clear that we want to have a canonical form for
constructs like this; if anyone thinks that a select is not the best
canonical form, please tell me.)
llvm-svn: 75531
|
|
|
|
| |
llvm-svn: 75528
|
|
|
|
|
|
|
|
| |
the changes are allowed by not calling this function for bitcasts.
The Instruction::AShr case is dead because
SimplifyDemandedInstructionBits handles that case.
llvm-svn: 75514
|
|
|
|
| |
llvm-svn: 75499
|
|
|
|
| |
llvm-svn: 75497
|
|
|
|
|
|
| |
bitcasts will always be eliminated anyway.
llvm-svn: 75495
|
|
|
|
|
|
|
|
|
| |
Constants.cpp and ConstantFold.cpp.
This involves temporarily hard wiring some parts to use the global context. This isn't ideal, but it's
the only way I could figure out to make this process vaguely incremental.
llvm-svn: 75445
|
|
|
|
|
|
| |
InstCombiner::visitSelectInstWithICmp.
llvm-svn: 75409
|
|
|
|
|
|
|
|
|
| |
Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.
llvm-svn: 75379
|
|
|
|
|
|
| |
and abort()/exit() -> llvm_report_error().
llvm-svn: 75363
|
|
|
|
| |
llvm-svn: 75255
|
|
|
|
|
|
| |
the [I|F]CmpInst constructors. Who knew!?
llvm-svn: 75200
|
|
|
|
| |
llvm-svn: 75159
|
|
|
|
| |
llvm-svn: 74878
|
|
|
|
|
|
| |
files.
llvm-svn: 74844
|
|
|
|
| |
llvm-svn: 74748
|
|
|
|
| |
llvm-svn: 74646
|
|
|
|
|
|
|
| |
C is not a low-bits mask, and add a similar instcombine for
zext((trunc(t) & C) ^ C).
llvm-svn: 73705
|
|
|
|
|
|
| |
multiple users.
llvm-svn: 73656
|
|
|
|
|
|
| |
SRem.
llvm-svn: 73598
|
|
|
|
| |
llvm-svn: 73541
|
|
|
|
|
|
|
| |
to ignore readonly calls, and factor it out of instcombine so
that it can be used by other passes. Patch by Frits van Bommel!
llvm-svn: 73506
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
failures.
To support this, add some utility functions to Type to help support
vector/scalar-independent code. Change ConstantInt::get and
ConstantFP::get to support vector types, and add an overload to
ConstantInt::get that uses a static IntegerType type, for
convenience.
Introduce a new getConstant method for ScalarEvolution, to simplify
common use cases.
llvm-svn: 73431
|
|
|
|
| |
llvm-svn: 73362
|
|
|
|
|
|
| |
it may round differently. This fixes PR4374.
llvm-svn: 73243
|
|
|
|
|
|
| |
turned into unreachable.
llvm-svn: 73195
|
|
|
|
|
|
| |
sometimes it can find simplifications that won't be found otherwise.
llvm-svn: 73006
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
integer and floating-point opcodes, introducing
FAdd, FSub, and FMul.
For now, the AsmParser, BitcodeReader, and IRBuilder all preserve
backwards compatability, and the Core LLVM APIs preserve backwards
compatibility for IR producers. Most front-ends won't need to change
immediately.
This implements the first step of the plan outlined here:
http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt
llvm-svn: 72897
|
|
|
|
|
|
|
|
| |
instcombine doesn't know when it's safe. To partially compensate
for this, introduce new code to do this transformation in
dagcombine, which can use UnsafeFPMath.
llvm-svn: 72872
|
|
|
|
|
|
| |
instead of signed integer constant.
llvm-svn: 72300
|
|
|
|
|
|
|
|
| |
Instcombine to be more aggressive about using SimplifyDemandedBits
on shift nodes. This allows a shift to be simplified to zero in the
included test case.
llvm-svn: 72204
|
|
|
|
|
|
|
| |
is not known to be nothrow. This allows readnone/readonly functions
to be deleted even if we don't know whether the callee can throw.
llvm-svn: 71676
|
|
|
|
|
|
|
| |
will make it more obvious what it represents, and stop
it being confused with the StoreSize.
llvm-svn: 71349
|
|
|
|
|
|
| |
preparation for the day we use null TargetData when no target is specified.
llvm-svn: 71210
|
|
|
|
|
|
| |
types, such as loads and calls.
llvm-svn: 71175
|
|
|
|
|
|
|
|
| |
the optimizers about this. For example, a readonly
function with no uses cannot be removed unless it is
also marked nounwind.
llvm-svn: 71071
|
|
|
|
| |
llvm-svn: 70054
|
|
|
|
|
|
|
| |
into unsigned ones when the operands are known to have the same
sign bit value.
llvm-svn: 70053
|
|
|
|
| |
llvm-svn: 69946
|
|
|
|
|
|
| |
pointer type, make sure that the pointer size is a valid sequential index type.
llvm-svn: 69574
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
integer types, unless they are already strange. This prevents it from
turning the code produced by SROA into crazy libcalls and stuff that
the code generator can't handle. In the attached example, the result
was an i96 multiply that caused the x86 backend to assert.
Note that if TargetData had an idea of what the legal types are for
a target that this could be used to stop instcombine from introducing
i64 muls, as Scott wanted.
llvm-svn: 68598
|
|
|
|
| |
llvm-svn: 68500
|