| 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
|
| |
|
|
| |
llvm-svn: 75255
|
| |
|
|
|
|
| |
the [I|F]CmpInst constructors. Who knew!?
llvm-svn: 75200
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
module is required.
llvm-svn: 75025
|
| |
|
|
| |
llvm-svn: 74985
|
| |
|
|
| |
llvm-svn: 74878
|
| |
|
|
|
|
| |
files.
llvm-svn: 74844
|
| |
|
|
| |
llvm-svn: 74807
|
| |
|
|
| |
llvm-svn: 74782
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
| |
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: 74351
|
| |
|
|
| |
llvm-svn: 74285
|
| |
|
|
|
|
|
| |
an invoke instruction, since the value isn't really live across that
edge.
llvm-svn: 74242
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
problem addressed in 31284, but the patch there only
addressed the case where an invoke is the first thing in
a block.
llvm-svn: 73416
|
| |
|
|
| |
llvm-svn: 73362
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 72610
|
| |
|
|
|
|
|
|
|
| |
and it wasn't generating calls through @PLT for these functions.
hasLocalLinkage() is now false for available_externally,
I attempted to fix the inliner and dce to handle available_externally properly.
It passed make check.
llvm-svn: 72328
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instructions. It attempts to create high-level multi-operand GEPs,
though in cases where this isn't possible it falls back to casting
the pointer to i8* and emitting a GEP with that. Using GEP instructions
instead of ptrtoint+arithmetic+inttoptr helps pointer analyses that
don't use ScalarEvolution, such as BasicAliasAnalysis.
Also, make the AddrModeMatcher more aggressive in handling GEPs.
Previously it assumed that operand 0 of a GEP would require a register
in almost all cases. It now does extra checking and can do more
matching if operand 0 of the GEP is foldable. This fixes a problem
that was exposed by SCEVExpander using GEPs.
llvm-svn: 72093
|
| |
|
|
|
|
| |
adding another copy.
llvm-svn: 71783
|
| |
|
|
| |
llvm-svn: 71717
|
| |
|
|
|
|
|
| |
external. These may have address 0 and are not safe
to execute unconditionally.
llvm-svn: 71688
|
| |
|
|
|
|
|
| |
will make it more obvious what it represents, and stop
it being confused with the StoreSize.
llvm-svn: 71349
|
| |
|
|
| |
llvm-svn: 71199
|
| |
|
|
|
|
| |
separate back() and pop_back() calls.
llvm-svn: 71089
|
| |
|
|
|
|
|
|
| |
the optimizers about this. For example, a readonly
function with no uses cannot be removed unless it is
also marked nounwind.
llvm-svn: 71071
|
| |
|
|
|
|
|
|
|
|
|
|
| |
CallbackVH, with fixes. allUsesReplacedWith need to
walk the def-use chains and invalidate all users of a
value that is replaced. SCEVs of users need to be
recalcualted even if the new value is equivalent. Also,
make forgetLoopPHIs walk def-use chains, since any
SCEV that depends on a PHI should be recalculated when
more information about that PHI becomes available.
llvm-svn: 70927
|
| |
|
|
|
|
| |
FindFunctionBackedges function.
llvm-svn: 70819
|
| |
|
|
| |
llvm-svn: 70661
|
| |
|
|
|
|
|
|
|
| |
makes ScalarEvolution::deleteValueFromRecords, and it's code that
subtly needed to be called before ReplaceAllUsesWith, unnecessary.
It also makes ValueDeletionListener unnecessary.
llvm-svn: 70645
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of returning a list of pointers to Values that are deleted. This was
unsafe, because the pointers in the list are, by nature of what
RecursivelyDeleteDeadInstructions does, always dangling. Replace this
with a simple callback mechanism. This may eventually be removed if
all clients can reasonably be expected to use CallbackVH.
Use this to factor out the dead-phi-cycle-elimination code from LSR
utility function, and generalize it to use the
RecursivelyDeleteTriviallyDeadInstructions utility function.
This makes LSR more aggressive about eliminating dead PHI cycles;
adjust tests to either be less trivial or to simply expect fewer
instructions.
llvm-svn: 70636
|
| |
|
|
|
|
|
|
| |
the predecessors themselves. This halves the time
to optimize the testcase, beyond what my previous patch did.
llvm-svn: 69792
|
| |
|
|
|
|
| |
testcase from PR3549. More improvements to come.
llvm-svn: 69788
|
| |
|
|
| |
llvm-svn: 69752
|
| |
|
|
| |
llvm-svn: 69402
|
| |
|
|
|
|
| |
incoming edges for a block with many predecessors.
llvm-svn: 69312
|
| |
|
|
|
|
| |
llvm.dbg.region.end instrinsic. This nested llvm.dbg.func.start/llvm.dbg.region.end pair now enables DW_TAG_inlined_subroutine support in code generator.
llvm-svn: 69118
|
| |
|
|
|
|
| |
Patch by Jay Foad.
llvm-svn: 68120
|
| |
|
|
|
|
| |
explicitly flush it.
llvm-svn: 67526
|
| |
|
|
| |
llvm-svn: 67454
|
| |
|
|
|
|
|
|
|
| |
linkage: the value may be replaced with something
different at link time. (Frontends that want to
allow values to be loaded out of weak constants can
give their constants weak_odr linkage).
llvm-svn: 67407
|