| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 85635
|
|
|
|
|
|
|
| |
This reduces codesize on a variety of codes by 1-2% on x86-64. It also
helps clean up after SSAUpdater.
llvm-svn: 85626
|
|
|
|
|
|
|
| |
this will increase the likelihood of common code getting sunk towards
the unwind.
llvm-svn: 83996
|
|
|
|
|
|
| |
update all the callers.
llvm-svn: 82889
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and introduce a new Instruction::isIdenticalTo which tests for full
identity, including the SubclassOptionalData flags. Also, fix the
Instruction::clone implementations to preserve the SubclassOptionalData
flags. Finally, teach several optimizations how to handle
SubclassOptionalData correctly, given these changes.
This fixes the counterintuitive behavior of isIdenticalTo not comparing
the full value, and clone not returning an identical clone, as well as
some subtle bugs that could be caused by these.
Thanks to Nick Lewycky for reporting this, and for an initial patch!
llvm-svn: 80038
|
|
|
|
| |
llvm-svn: 79849
|
|
|
|
|
|
| |
This required converting a bunch of stuff off DOUT and other cleanups.
llvm-svn: 79819
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
unfoldable references to a PHI node in the block being folded, and disable
the transformation in that case. The correct transformation of such PHI
nodes depends on whether BB dominates Succ, and dominance is expensive
to compute here. (Alternatively, it's possible to check whether any
uses are live, but that's also essentially a dominance calculation.
Another alternative is to use reg2mem, but it probably isn't a good idea to
use that in simplifycfg.)
Also, remove some incorrect code from CanPropagatePredecessorsForPHIs
which is made unnecessary with this patch: it didn't consider the case
where a PHI node in BB has multiple uses.
llvm-svn: 79174
|
|
|
|
| |
llvm-svn: 78948
|
|
|
|
| |
llvm-svn: 78809
|
|
|
|
| |
llvm-svn: 77635
|
|
|
|
| |
llvm-svn: 77152
|
|
|
|
|
|
|
|
|
|
| |
- Some clients which used DOUT have moved to DEBUG. We are deprecating the
"magic" DOUT behavior which avoided calling printing functions when the
statement was disabled. In addition to being unnecessary magic, it had the
downside of leaving code in -Asserts builds, and of hiding potentially
unnecessary computations.
llvm-svn: 77019
|
|
|
|
|
|
| |
thanks to contexts-on-types. More to come.
llvm-svn: 77011
|
|
|
|
| |
llvm-svn: 76702
|
|
|
|
|
|
|
|
|
|
| |
isSafeToSpeculativelyExecute. The new method is a bit closer to what
the callers actually care about in that it rejects more things callers
don't want. It also adds more precise handling for integer
division, and unifies code for analyzing the legality of a speculative
load.
llvm-svn: 76150
|
|
|
|
| |
llvm-svn: 75497
|
|
|
|
|
|
| |
the [I|F]CmpInst constructors. Who knew!?
llvm-svn: 75200
|
|
|
|
| |
llvm-svn: 74878
|
|
|
|
|
|
| |
files.
llvm-svn: 74844
|
|
|
|
| |
llvm-svn: 74807
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
separate back() and pop_back() calls.
llvm-svn: 71089
|
|
|
|
| |
llvm-svn: 67307
|
|
|
|
|
|
| |
codegen (speculative execution).
llvm-svn: 66859
|
|
|
|
|
|
|
|
| |
right; did the wrong thing when there are exactly 11
non-debug instructions, followed by debug info.
Remove a FIXME since it's apparently been fixed along the way.
llvm-svn: 66840
|
|
|
|
|
|
| |
sorting of ConstantInt's; unreinvent wheel.
llvm-svn: 66824
|
|
|
|
| |
llvm-svn: 66800
|
|
|
|
| |
llvm-svn: 66751
|
|
|
|
|
|
|
|
|
| |
from a switch table. Multiple table entries that
branch to the same place were being sorted by the
pointer value of the ConstantInt*; changed to sort
by the actual value of the ConstantInt.
llvm-svn: 66749
|
|
|
|
| |
llvm-svn: 66554
|
|
|
|
|
|
| |
an optimization.
llvm-svn: 66288
|
|
|
|
|
|
| |
intrinsics.
llvm-svn: 66255
|
|
|
|
| |
llvm-svn: 65961
|
|
|
|
| |
llvm-svn: 65960
|
|
|
|
|
|
| |
conditional branch predecessors.
llvm-svn: 65509
|
|
|
|
| |
llvm-svn: 65456
|
|
|
|
|
|
|
|
|
|
|
| |
predecessor, instead of removing it. This fixes following tests from llvmgcc42 testsuite.
gcc.c-torture/execute/20000605-3.c
gcc.c-torture/execute/20020619-1.c
gcc.c-torture/execute/20030920-1.c
gcc.c-torture/execute/loop-ivopts-1.c
llvm-svn: 65353
|
|
|
|
|
|
| |
llvm.dbg.func.start also.
llvm-svn: 64278
|
|
|
|
| |
llvm-svn: 64242
|
|
|
|
| |
llvm-svn: 63888
|
|
|
|
| |
llvm-svn: 63876
|
|
|
|
| |
llvm-svn: 63802
|
|
|
|
| |
llvm-svn: 63781
|
|
|
|
| |
llvm-svn: 63700
|