|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| | function.
llvm-svn: 75584 | 
| | 
| 
| 
| 
| 
| | block has a single unique exiting block.
llvm-svn: 75579 | 
| | 
| 
| 
| 
| 
| | xor R, R is a common and valid idiom for zeroing a register, for example.
llvm-svn: 75571 | 
| | 
| 
| 
| | 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 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | using the Curiously Recurring Template Pattern with LoopBase.
This will help further refactoring, and future functionality for
Loop. Also, Headers can now foward-declare Loop, instead of pulling
in LoopInfo.h or doing tricks.
llvm-svn: 75519 | 
| | 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| | llvm-svn: 75393 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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 | 
| | 
| 
| 
| | llvm-svn: 75255 | 
| | 
| 
| 
| 
| 
| | the [I|F]CmpInst constructors.  Who knew!?
llvm-svn: 75200 | 
| | 
| 
| 
| | llvm-svn: 75159 | 
| | 
| 
| 
| 
| 
| | we're inserting sigma/phi functions for. Patch by Andre Tavares.
llvm-svn: 75138 | 
| | 
| 
| 
| 
| 
| | Add an -ssi-everything pass which calls createSSI on everything in the function.
llvm-svn: 75135 | 
| | 
| 
| 
| | llvm-svn: 75040 | 
| | 
| 
| 
| 
| 
| 
| | This way ScalarEvolution can examine the loop to determine what state
it needs to update, if it chooses.
llvm-svn: 75029 | 
| | 
| 
| 
| 
| 
| | module is required.
llvm-svn: 75025 | 
| | 
| 
| 
| 
| 
| 
| | these instructions, no autoupgrade or backwards compatibility support is
provided.
llvm-svn: 74991 | 
| | 
| 
| 
| | llvm-svn: 74985 | 
| | 
| 
| 
| | llvm-svn: 74918 | 
| | 
| 
| 
| | llvm-svn: 74878 | 
| | 
| 
| 
| 
| 
| | through the ValueTracking API.
llvm-svn: 74873 | 
| | 
| 
| 
| 
| 
| | files.
llvm-svn: 74844 | 
| | 
| 
| 
| | llvm-svn: 74811 | 
| | 
| 
| 
| | llvm-svn: 74807 | 
| | 
| 
| 
| | llvm-svn: 74782 | 
| | 
| 
| 
| | llvm-svn: 74781 | 
| | 
| 
| 
| 
| 
| 
| | Use it by requiring it through the pass manager, then calling its createSSI
method on the variables that you want in SSI form.
llvm-svn: 74780 | 
| | 
| 
| 
| | llvm-svn: 74773 | 
| | 
| 
| 
| | llvm-svn: 74753 | 
| | 
| 
| 
| | llvm-svn: 74748 | 
| | 
| 
| 
| 
| 
| 
| | This was considering vector intrinsics to have cost 2, but non-vector
intrinsics to have cost 1, which is backward.
llvm-svn: 74698 | 
| | 
| 
| 
| 
| 
| | a key is present in a std::map or DenseMap to use find instead.
llvm-svn: 74676 | 
| | 
| 
| 
| 
| 
| 
| | PassManager was scheduling LCSSA before LoopSimplify, which does not
preserve LCSSA.
llvm-svn: 74661 | 
| | 
| 
| 
| | llvm-svn: 74646 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | LLVMContext through a lot
of the bitcode reader and ASM parser APIs, as well as supporting it in all of the tools.
Patches for Clang and LLVM-GCC to follow.
llvm-svn: 74614 | 
| | 
| 
| 
| 
| 
| 
| 
| | arguments/elements
to not have to create a temporary vector (in the API at least).  Patch by Jay Foad!
llvm-svn: 74584 | 
| | 
| 
| 
| | llvm-svn: 74491 | 
| | 
| 
| 
| 
| 
| | doesn't have an IV-based operand. This fixes PR4471.
llvm-svn: 74399 | 
| | 
| 
| 
| 
| 
| 
| | LoopInfo will handle removing it from the Loop, as well as updating
its own tables.
llvm-svn: 74398 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | when one of them can be converted to a trivial icmp and conditional
branch.
This addresses what is essentially a phase ordering problem.
SimplifyCFG knows how to do this transformation, but it doesn't do so
if the primary block has any instructions in it other than an icmp and
a branch. In the given testcase, the block contains other instructions,
however they are loop-invariant and can be hoisted. SimplifyCFG doesn't
have LoopInfo though, so it can't hoist them. And, it's important that
the blocks be merged before LoopRotation, as it doesn't support
multiple-exit loops.
llvm-svn: 74396 | 
| | 
| 
| 
| | llvm-svn: 74395 |