| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 33693
|
| |
|
|
|
|
| |
This allows us to eliminate many temporary vectors, and theirassociated malloc/free pairs.
llvm-svn: 33692
|
| |
|
|
|
|
|
| |
- Islands are inserted right after the user MI since thumb LDR cannot encode
negative offset.
llvm-svn: 33690
|
| |
|
|
| |
llvm-svn: 33688
|
| |
|
|
|
|
|
| |
it can be used by multiple clients. This specifically allows the inliner
to constant fold symbolically.
llvm-svn: 33687
|
| |
|
|
|
|
|
| |
ConstantFoldInstOperands. Switch to ConstantFoldInstOperands and remove
ConstantFold.
llvm-svn: 33683
|
| |
|
|
|
|
| |
transformutils to libanalysis.
llvm-svn: 33680
|
| |
|
|
|
|
| |
libanalysis/ConstantFolding.cpp.
llvm-svn: 33679
|
| |
|
|
| |
llvm-svn: 33678
|
| |
|
|
| |
llvm-svn: 33677
|
| |
|
|
|
|
| |
used by constant folding.
llvm-svn: 33676
|
| |
|
|
| |
llvm-svn: 33675
|
| |
|
|
| |
llvm-svn: 33674
|
| |
|
|
| |
llvm-svn: 33673
|
| |
|
|
| |
llvm-svn: 33672
|
| |
|
|
| |
llvm-svn: 33671
|
| |
|
|
|
|
|
|
|
|
|
| |
ConstantFoldInstOperands/ConstantFoldCall to take a pointer to an array
of operands + size, instead of an std::vector.
In some cases, switch to using a SmallVector instead of a vector.
This allows us to get rid of some special case gross code that was there
to avoid the cost of constructing a vector.
llvm-svn: 33670
|
| |
|
|
|
|
|
| |
that would require > 3 instructions to materialize), load the immediate from a
constpool entry.
llvm-svn: 33667
|
| |
|
|
| |
llvm-svn: 33666
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This occurs in C++ code like:
#include <iostream>
#include <iterator>
int a[] = { 1, 2, 3, 4, 5 };
int main() {
using namespace std;
copy(a, a + sizeof(a)/sizeof(a[0]), ostream_iterator<int>(cout, "\n"));
return 0;
}
Before we would decide the loop trip count is:
sdiv (i32 sub (i32 ptrtoint (i32* getelementptr ([5 x i32]* @a, i32 0, i32 5) to i32), i32 ptrtoint ([5 x i32]* @a to i32)), i32 4)
Now we decide it is "5". Amazing.
This code will need to be refactored, but I'm doing that as a separate
commit.
llvm-svn: 33665
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
.set PCRELV0, (LJTI1_0_0-(LPCRELL0+4))
LPCRELL0:
add r1, pc, #PCRELV0
This is not legal since add r1, pc, #c requires the constant be a multiple of 4.
Do the following instead:
.set PCRELV0, (LJTI1_0_0-(LPCRELL0+4))
LPCRELL0:
mov r1, #PCRELV0
add r1, pc
- In thumb mode, it's not possible to use .set generate a pc relative stub
address. The stub is ARM code which is in a different section from the thumb
code. Load the value from a constpool instead.
- Some asm printing clean up.
llvm-svn: 33664
|
| |
|
|
|
|
| |
confusion with external linkage types.
llvm-svn: 33663
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
outweight its computational costs. This patch removes all compaction
table handling from the bcreader and bcwriter. For the record, here's the
difference betweeen having and not having compaction tables for some tests:
Test With Without Size Chg
Olden/mst 5,602 5,598 +0.1%
viterbi 18,026 17,795 +1.3%
obsequi 162,133 166,663 -2.8%
burg 224,090 228,148 -1.8%
kimwitu++ 4,933,263 5,121,159 -3.8%
176.gcc 8,470,424 9,141,539 -7.3%
It seems that it is more beneficial to larger files, but even on the largest
test case we have (176.gcc) it only amounts ot an I/O saving of 7.3%.
llvm-svn: 33661
|
| |
|
|
| |
llvm-svn: 33658
|
| |
|
|
|
|
| |
.destructor sections.
llvm-svn: 33657
|
| |
|
|
| |
llvm-svn: 33656
|
| |
|
|
|
|
| |
sp, imm instructions implicitly multiply the offset by 4.
llvm-svn: 33653
|
| |
|
|
| |
llvm-svn: 33652
|
| |
|
|
|
|
|
| |
instructions that use these address modes to instructions that use
t_addrmode_sp.
llvm-svn: 33651
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
spilled (if it is not already).
- If LR is spilled, use BL to implement far jumps. LR is not used as a GPR
in thumb mode so it can be clobbered if it is properly spilled / restored
in prologue / epilogue.
- If LR is force spilled but no far jump has been emitted, try undo'ing the
spill by:
push lr -> delete
pop pc -> bx lr
llvm-svn: 33650
|
| |
|
|
| |
llvm-svn: 33649
|
| |
|
|
| |
llvm-svn: 33644
|
| |
|
|
|
|
|
|
| |
This doesn't do the "right thing" but will probably work in most cases.
This implements CodeGen/PowerPC/2007-01-29-lbrx-asm.ll.
llvm-svn: 33643
|
| |
|
|
| |
llvm-svn: 33641
|
| |
|
|
| |
llvm-svn: 33640
|
| |
|
|
| |
llvm-svn: 33639
|
| |
|
|
|
|
|
|
|
|
|
| |
PassManagers.h).
- Add StopPassTimer() and StartPassTimer() to expose TimingInfo to
CallGraphPassManager
- Use these two APIs in CalLgraphPassManager to measure timings.
llvm-svn: 33638
|
| |
|
|
|
|
| |
address nodes.
llvm-svn: 33636
|
| |
|
|
|
|
| |
regs.
llvm-svn: 33635
|
| |
|
|
| |
llvm-svn: 33634
|
| |
|
|
| |
llvm-svn: 33633
|
| |
|
|
| |
llvm-svn: 33632
|
| |
|
|
|
|
| |
for "inreg" calls
llvm-svn: 33631
|
| |
|
|
| |
llvm-svn: 33630
|
| |
|
|
| |
llvm-svn: 33629
|
| |
|
|
| |
llvm-svn: 33628
|
| |
|
|
| |
llvm-svn: 33627
|
| |
|
|
| |
llvm-svn: 33626
|
| |
|
|
| |
llvm-svn: 33625
|
| |
|
|
| |
llvm-svn: 33622
|