summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Use 'static const char' instead of 'static const int'.Devang Patel2007-05-021-2/+2
| | | | | | | Due to darwin gcc bug, one version of darwin linker coalesces static const int, which defauts PassID based pass identification. llvm-svn: 36652
* Do not use typeinfo to identify pass in pass manager.Devang Patel2007-05-011-0/+4
| | | | llvm-svn: 36632
* Rewrite of Thumb constant islands handling (exact allowance for paddingDale Johannesen2007-04-291-84/+222
| | | | | | around islands and jump tables). llvm-svn: 36573
* Doh. ARM::LEApcrel is a single instruction MI.Evan Cheng2007-04-271-5/+3
| | | | llvm-svn: 36513
* Special handling of LEApcrel and tLEApcrel.Evan Cheng2007-04-271-0/+11
| | | | llvm-svn: 36504
* Make Thumb funcs containing islands 4-byte aligned. Fix bugs maintainingDale Johannesen2007-04-231-6/+19
| | | | | | BBOffsets and BBSizes when adjusting conditional branches. llvm-svn: 36372
* Remove unused constant pool entries.Evan Cheng2007-04-031-32/+60
| | | | llvm-svn: 35635
* fix off by 1 error in displacement computationDale Johannesen2007-04-021-0/+5
| | | | llvm-svn: 35602
* - Track which callee-saved registers are spilled.Evan Cheng2007-03-011-1/+1
| | | | | | - Some code clean up. llvm-svn: 34783
* Changes requested in review of last pass. Also pulled isThumb into aDale Johannesen2007-02-281-113/+142
| | | | | | member, instead of resetting in every function that uses it. llvm-svn: 34764
* Add intelligence about where to break large blocks.Dale Johannesen2007-02-281-23/+73
| | | | llvm-svn: 34755
* cosmetic changes from review of last patch. obviousDale Johannesen2007-02-251-2/+2
| | | | llvm-svn: 34598
* remove crediting of Evan Cheng and me.Dale Johannesen2007-02-251-1/+0
| | | | llvm-svn: 34568
* Removed WaterListOffset, inserted BBOffsets. Remove TODO item about thisDale Johannesen2007-02-251-102/+105
| | | | | | | from README. When no water available, use end of block if in range. (More to do here.) llvm-svn: 34563
* rewrite of constant islandsDale Johannesen2007-02-231-73/+262
| | | | llvm-svn: 34523
* These vectors are frequently large. Use std::vector instead.Evan Cheng2007-02-091-10/+10
| | | | llvm-svn: 34109
* Add reference counting to constantpool entries. Delete the unused ones.Evan Cheng2007-02-091-36/+113
| | | | llvm-svn: 34105
* - Branch max. displacement calculation bug.Evan Cheng2007-02-031-9/+20
| | | | | | - Add debugging info. llvm-svn: 33811
* Use MBB.empty() instead of MBB.size() for speed.Evan Cheng2007-02-021-1/+1
| | | | llvm-svn: 33789
* Watch out for empty BB.Evan Cheng2007-02-021-0/+1
| | | | llvm-svn: 33788
* Pasto. Lots of it.Evan Cheng2007-02-011-5/+3
| | | | llvm-svn: 33762
* - Off by one bugs in maximum displacement calculation / testing.Evan Cheng2007-02-011-15/+28
| | | | | | | - In thumb mode, a new constpool island BB size should be 4 + 2 to compensate for the potential padding due to alignment requirement. llvm-svn: 33753
* Pessmistically assume the .align 2 before the first constpool entry addsEvan Cheng2007-02-011-2/+12
| | | | | | two bytes padding. llvm-svn: 33734
* Handle an interesting corner case: the constpool_entry being reference is twoEvan Cheng2007-01-311-2/+2
| | | | | | | | | instructions away, i.e. its address is equal to PC. %r0 = tLDRpci <cp#0> bx CONSTPOOL_ENTRY 0 <cp#0>, 4 llvm-svn: 33728
* When determining whether a pc relative branch / load displacement fits in theEvan Cheng2007-01-311-27/+42
| | | | | | instruction field, adjust it for PC value (4 for thumb, 8 for arm). llvm-svn: 33711
* Some comments.Evan Cheng2007-01-311-2/+6
| | | | llvm-svn: 33707
* ConstPool island bug: watch out for cases where UserMI is the last MI of the BB.Evan Cheng2007-01-311-4/+16
| | | | llvm-svn: 33706
* - 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
* - In thumb mode, if size of MachineFunction is >= 2048, force LR to beEvan Cheng2007-01-301-31/+99
| | | | | | | | | | | | | 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
* Factor GetInstSize() out of constpool island pass.Evan Cheng2007-01-291-69/+4
| | | | llvm-svn: 33644
* Thumb jumptable support.Evan Cheng2007-01-271-1/+9
| | | | llvm-svn: 33568
* Conditional branch being fixed up is not the last MI in the BB, there is aEvan Cheng2007-01-261-13/+51
| | | | | | | | | | | | | unconditional branch following it. Simply invert the condition and swap destinations if the conditional branch can reach the destination of the unconditional branch: beq L1 b L2 => bne L2 b L1 llvm-svn: 33548
* Make LABEL a builtin opcode.Jim Laskey2007-01-261-0/+2
| | | | llvm-svn: 33537
* SplitBlockBeforeInstr() insert a unconditional branch to the next BB. ThisEvan Cheng2007-01-261-2/+6
| | | | | | | is unnecessary when we are fixing up a conditional branch since we will be adding a unconditional branch to the destination of the original branch. llvm-svn: 33517
* Need to scan the function for branches even if there aren't any constants.Evan Cheng2007-01-261-3/+2
| | | | llvm-svn: 33515
* Forgot to update this.Evan Cheng2007-01-251-1/+1
| | | | llvm-svn: 33512
* Add comment, fix typo, reduce memory usage, etc.Evan Cheng2007-01-251-9/+14
| | | | llvm-svn: 33510
* Doh. Skip JT branches.Evan Cheng2007-01-251-1/+2
| | | | llvm-svn: 33501
* Added (preliminary) branch shortening capability to constantpool island pass.Evan Cheng2007-01-251-7/+130
| | | | llvm-svn: 33497
* Use PC relative ldr to load from a constantpool in Thumb mode.Evan Cheng2007-01-241-0/+3
| | | | llvm-svn: 33484
* ARM backend contribution from Apple.Evan Cheng2007-01-191-0/+490
llvm-svn: 33353
OpenPOWER on IntegriCloud