summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* eliminate temporary vectorsChris Lattner2007-01-313-17/+25
| | | | llvm-svn: 33693
* Revise APIs for creating constantexpr GEPs to not require the use of vectors.Chris Lattner2007-01-314-46/+47
| | | | | | This allows us to eliminate many temporary vectors, and theirassociated malloc/free pairs. llvm-svn: 33692
* - Added Thumb constpool island support.Evan Cheng2007-01-311-24/+17
| | | | | | | - Islands are inserted right after the user MI since thumb LDR cannot encode negative offset. llvm-svn: 33690
* Move symbolic constant folding code to libanalysis.Chris Lattner2007-01-311-106/+0
| | | | llvm-svn: 33688
* Move some symbolic constant folding code out of instcombine into a placeChris Lattner2007-01-311-3/+136
| | | | | | | it can be used by multiple clients. This specifically allows the inliner to constant fold symbolically. llvm-svn: 33687
* The local "ConstantFold" method is now just a watered down version ofChris Lattner2007-01-301-37/+3
| | | | | | | ConstantFoldInstOperands. Switch to ConstantFoldInstOperands and remove ConstantFold. llvm-svn: 33683
* Adjust #includes to match movement of constant folding code from ↵Chris Lattner2007-01-3011-10/+14
| | | | | | transformutils to libanalysis. llvm-svn: 33680
* move a bunch of constant folding code f rom Transforms/Utils/Local.cpp intoChris Lattner2007-01-302-154/+155
| | | | | | libanalysis/ConstantFolding.cpp. llvm-svn: 33679
* remove now-dead code.Chris Lattner2007-01-301-14/+0
| | | | llvm-svn: 33678
* the inliner pass now passes targetdata down through the inliner api'sChris Lattner2007-01-302-3/+19
| | | | llvm-svn: 33677
* The inliner/cloner can now optionally take TargetData info, which can beChris Lattner2007-01-302-11/+14
| | | | | | used by constant folding. llvm-svn: 33676
* reformat commentChris Lattner2007-01-301-2/+2
| | | | llvm-svn: 33675
* pass TD to constant folding apisChris Lattner2007-01-301-2/+2
| | | | llvm-svn: 33674
* adjust to constant folding api changes.Chris Lattner2007-01-302-7/+8
| | | | llvm-svn: 33673
* use smallvector instead of vector to make constant folding a bit more efficientChris Lattner2007-01-301-2/+3
| | | | llvm-svn: 33672
* adjust to api changeChris Lattner2007-01-301-1/+2
| | | | llvm-svn: 33671
* Change constant folding APIs to take an optional TargetData, and changeChris Lattner2007-01-302-41/+18
| | | | | | | | | | | 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
* During PEI, if the immediate value of sp + offset is too large (i.e. somethingEvan Cheng2007-01-301-21/+102
| | | | | | | that would require > 3 instructions to materialize), load the immediate from a constpool entry. llvm-svn: 33667
* remove some bits that are not yet meant to land.Chris Lattner2007-01-301-57/+0
| | | | llvm-svn: 33666
* Symbolically evaluate constant expressions like &A[123] - &A[4].f.Chris Lattner2007-01-301-2/+143
| | | | | | | | | | | | | | | | | | | | | | | 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
* - Fix codegen for pc relative constant (e.g. JT) in thumb mode:Evan Cheng2007-01-307-47/+96
| | | | | | | | | | | | | | | | | | | .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
* For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoidReid Spencer2007-01-3058-1322/+1148
| | | | | | confusion with external linkage types. llvm-svn: 33663
* Bye, Bye Compaction Tables. The benefit compaction tables provides doesn'tReid Spencer2007-01-306-722/+35
| | | | | | | | | | | | | | | | | | | 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
* Copy and paste bug.Evan Cheng2007-01-301-1/+11
| | | | llvm-svn: 33658
* Darwin -static should codegen static ctors / dtors to .constructor / ↵Evan Cheng2007-01-306-9/+47
| | | | | | .destructor sections. llvm-svn: 33657
* Misseed thumb jumptable branch.Evan Cheng2007-01-301-0/+1
| | | | llvm-svn: 33656
* In thumb mode, round up stack frame size to multiple of 4 since add/subEvan Cheng2007-01-301-115/+124
| | | | | | sp, imm instructions implicitly multiply the offset by 4. llvm-svn: 33653
* Thumb eliminateFrameIndex fixes.Evan Cheng2007-01-301-8/+27
| | | | llvm-svn: 33652
* Change the operand orders to t_addrmode_s* to make it easier to morphEvan Cheng2007-01-303-32/+26
| | | | | | | instructions that use these address modes to instructions that use t_addrmode_sp. llvm-svn: 33651
* - In thumb mode, if size of MachineFunction is >= 2048, force LR to beEvan Cheng2007-01-303-41/+123
| | | | | | | | | | | | | 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
* Use BL to implement Thumb far jumps.Evan Cheng2007-01-301-0/+3
| | | | llvm-svn: 33649
* Factor GetInstSize() out of constpool island pass.Evan Cheng2007-01-293-70/+84
| | | | llvm-svn: 33644
* add initial support for handling inline asms with multiple constraints.Chris Lattner2007-01-291-4/+42
| | | | | | | | 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
* Out of line function.Jim Laskey2007-01-292-0/+8
| | | | llvm-svn: 33641
* Use StartPassTimer() and StopPassManager()Devang Patel2007-01-291-3/+2
| | | | llvm-svn: 33640
* Only gather frame info if debug or eh.Jim Laskey2007-01-293-5/+4
| | | | llvm-svn: 33639
* - Undo previous check-in (i.e. Do not export TimingInfo class throughDevang Patel2007-01-291-5/+65
| | | | | | | | | | | PassManagers.h). - Add StopPassTimer() and StartPassTimer() to expose TimingInfo to CallGraphPassManager - Use these two APIs in CalLgraphPassManager to measure timings. llvm-svn: 33638
* Finish off bug 680, allowing targets to custom lower frame and returnNate Begeman2007-01-2911-58/+62
| | | | | | address nodes. llvm-svn: 33636
* We'd still like to register allocate r2 on darwin before the callee-saveNate Begeman2007-01-291-6/+6
| | | | | | regs. llvm-svn: 33635
* rename flagJim Laskey2007-01-291-1/+1
| | | | llvm-svn: 33634
* Comment.Evan Cheng2007-01-291-1/+1
| | | | llvm-svn: 33633
* Remember if LR register has been spilled in this function.Evan Cheng2007-01-292-5/+17
| | | | llvm-svn: 33632
* Save all registers by default, as they can be used to pass parametersAnton Korobeynikov2007-01-291-13/+11
| | | | | | for "inreg" calls llvm-svn: 33631
* Update some of the llvm in the readmeNate Begeman2007-01-291-25/+23
| | | | llvm-svn: 33630
* Properly support cstringsNate Begeman2007-01-291-3/+8
| | | | llvm-svn: 33629
* Flag to control exception handling.Jim Laskey2007-01-292-2/+9
| | | | llvm-svn: 33628
* Measure timings.Devang Patel2007-01-291-2/+3
| | | | llvm-svn: 33627
* Move TimingInfo into PassManagers.h so that other libs can use it.Devang Patel2007-01-291-53/+5
| | | | llvm-svn: 33626
* Disable zero landing pads for now.Jim Laskey2007-01-291-1/+2
| | | | llvm-svn: 33625
* Landing pad-less eh for PPC.Jim Laskey2007-01-295-122/+208
| | | | llvm-svn: 33622
OpenPOWER on IntegriCloud