| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
inserted to replace that value must dominate all of of the basic
blocks associated with the uses of the value in the PHI, not just
one of them.
llvm-svn: 74376
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This helps it avoid reusing an instruction that doesn't dominate all
of the users, in cases where the original instruction was inserted
before all of the users were known. This may result in redundant
expansions of sub-expressions that depend on loop-unpredictable values
in some cases, however this isn't very common, and it primarily impacts
IndVarSimplify, so GVN can be expected to clean these up.
This eliminates the need for IndVarSimplify's FixUsesBeforeDefs,
which fixes several bugs.
llvm-svn: 74352
|
|
|
|
| |
llvm-svn: 74351
|
|
|
|
| |
llvm-svn: 74330
|
|
|
|
| |
llvm-svn: 74285
|
|
|
|
|
|
| |
and llvm.dbg.global_variables.
llvm-svn: 74251
|
|
|
|
| |
llvm-svn: 74243
|
|
|
|
|
|
|
| |
an invoke instruction, since the value isn't really live across that
edge.
llvm-svn: 74242
|
|
|
|
| |
llvm-svn: 74240
|
|
|
|
| |
llvm-svn: 74146
|
|
|
|
|
|
|
|
| |
terminator, instead of after the last phi. This fixes a bug
exposed by ScalarEvolution analyzing more kinds of loops.
This fixes PR4436.
llvm-svn: 74072
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
trip counts in more cases.
Generalize ScalarEvolution's isLoopGuardedByCond code to recognize
And and Or conditions, splitting the code out into an
isNecessaryCond helper function so that it can evaluate Ands and Ors
recursively, and make SCEVExpander be much more aggressive about
hoisting instructions out of loops.
test/CodeGen/X86/pr3495.ll has an additional instruction now, but
it appears to be due to an arbitrary register allocation difference.
llvm-svn: 74048
|
|
|
|
|
|
| |
preheader is already an instruction.
llvm-svn: 74031
|
|
|
|
| |
llvm-svn: 73910
|