| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
access each with a fixed negative index from op_end().
This has two important implications:
- getUser() will work faster, because there are less iterations
for the waymarking algorithm to perform. This is important
when running various analyses that want to determine callers
of basic blocks.
- getSuccessor() now runs faster, because the indirection via OperandList
is not necessary: Uses corresponding to the successors are at fixed
offset to "this".
The price we pay is the slightly more complicated logic in the operator
User::delete, as it has to pick up the information whether it has to free
the memory of an original unconditional BranchInst or a BranchInst that
was originally conditional, but has been shortened to unconditional.
I was not able to come up with a nicer solution to this problem. (And
rest assured, I tried *a lot*).
Similar reorderings will follow for InvokeInst and CallInst. After that
some optimizations to pred_iterator and CallSite will fall out naturally.
llvm-svn: 66815
|
| |
|
|
|
|
| |
assembly. 2. Fixed JIT encoding by making the address pc-relative.
llvm-svn: 66803
|
| |
|
|
| |
llvm-svn: 66800
|
| |
|
|
| |
llvm-svn: 66798
|
| |
|
|
| |
llvm-svn: 66797
|
| |
|
|
| |
llvm-svn: 66795
|
| |
|
|
| |
llvm-svn: 66791
|
| |
|
|
| |
llvm-svn: 66790
|
| |
|
|
| |
llvm-svn: 66788
|
| |
|
|
| |
llvm-svn: 66780
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
related transformations out of target-specific dag combine into the
ARM backend. These were added by Evan in r37685 with no testcases
and only seems to help ARM (e.g. test/CodeGen/ARM/select_xform.ll).
Add some simple X86-specific (for now) DAG combines that turn things
like cond ? 8 : 0 -> (zext(cond) << 3). This happens frequently
with the recently added cp constant select optimization, but is a
very general xform. For example, we now compile the second example
in const-select.ll to:
_test:
movsd LCPI2_0, %xmm0
ucomisd 8(%esp), %xmm0
seta %al
movzbl %al, %eax
movl 4(%esp), %ecx
movsbl (%ecx,%eax,4), %eax
ret
instead of:
_test:
movl 4(%esp), %eax
leal 4(%eax), %ecx
movsd LCPI2_0, %xmm0
ucomisd 8(%esp), %xmm0
cmovbe %eax, %ecx
movsbl (%ecx), %eax
ret
This passes multisource and dejagnu.
llvm-svn: 66779
|
| |
|
|
| |
llvm-svn: 66778
|
| |
|
|
|
|
| |
one bits information for values that are live out of basic blocks. The goal is to eliminate unnecessary sext, zext, truncate of values that are live-in to blocks. This does not handle PHI nodes yet.
llvm-svn: 66777
|
| |
|
|
|
|
| |
double load and store instead.
llvm-svn: 66776
|
| |
|
|
| |
llvm-svn: 66775
|
| |
|
|
| |
llvm-svn: 66773
|
| |
|
|
| |
llvm-svn: 66770
|
| |
|
|
| |
llvm-svn: 66766
|
| |
|
|
|
|
| |
Remove the explicit if OS = Darwin test around the setting of -m32/-m64.
llvm-svn: 66765
|
| |
|
|
| |
llvm-svn: 66763
|
| |
|
|
|
|
| |
symbols in one section will always be put into one bank.
llvm-svn: 66761
|
| |
|
|
| |
llvm-svn: 66751
|
| |
|
|
| |
llvm-svn: 66750
|
| |
|
|
|
|
|
|
|
| |
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: 66746
|
| |
|
|
|
|
| |
assembly text output uses an indirect call ("call *") instead of a direct call.
llvm-svn: 66735
|
| |
|
|
| |
llvm-svn: 66733
|
| |
|
|
| |
llvm-svn: 66725
|
| |
|
|
|
|
| |
No (intended) functionality change.
llvm-svn: 66720
|
| |
|
|
|
|
| |
floating point instructions that are explicitly specified by the user.
llvm-svn: 66719
|
| |
|
|
|
|
|
|
| |
allocations. Apparently the assumption is there is an
instruction (terminator?) following the allocation so I
am allowing the same assumption.
llvm-svn: 66716
|
| |
|
|
|
|
| |
optimization too late and left the live intervals to be out of sync with instructions. This fixes 8b10b.
llvm-svn: 66715
|
| |
|
|
|
|
| |
for a dependency, not terminate the search.
llvm-svn: 66709
|
| |
|
|
| |
llvm-svn: 66708
|
| |
|
|
|
|
| |
functionality change.
llvm-svn: 66700
|
| |
|
|
| |
llvm-svn: 66699
|
| |
|
|
| |
llvm-svn: 66697
|
| |
|
|
| |
llvm-svn: 66692
|
| |
|
|
|
|
| |
linkage, so remove it.
llvm-svn: 66690
|
| |
|
|
| |
llvm-svn: 66688
|
| |
|
|
| |
llvm-svn: 66687
|
| |
|
|
|
|
|
| |
This fixes fallout from recent PIC/delibtoolize changes and unbreaks
build on cygming.
llvm-svn: 66686
|
| |
|
|
|
|
| |
clear some bits.
llvm-svn: 66684
|
| |
|
|
| |
llvm-svn: 66663
|
| |
|
|
| |
llvm-svn: 66660
|
| |
|
|
| |
llvm-svn: 66653
|
| |
|
|
|
|
|
| |
linkage: this linkage type only applies to declarations,
but ODR is only relevant to globals with definitions.
llvm-svn: 66650
|
| |
|
|
|
|
|
| |
variety. For example, an i64 div might turn into a call to __divdi3 during
legalization.
llvm-svn: 66646
|
| |
|
|
|
|
| |
pshuflw/hw.
llvm-svn: 66645
|
| |
|
|
| |
llvm-svn: 66642
|