[LLVMdev] patch for llc/ARM: added mechanism to move switch tables from .text -> .data; also cleanup and documentation
robert at muth.org
Wed Jun 3 11:33:36 PDT 2009
On Tue, Jun 2, 2009 at 9:40 PM, Eli Friedman <eli.friedman at gmail.com> wrote:
> On Tue, Jun 2, 2009 at 6:26 PM, robert muth<robert at muth.org> wrote:
>> This is my first patch submission. Hopefully, this is the proper the protocol.
> This is fine, although it's usually better to submit patches to llvm-commits.
>> Added mechanism to generate switch table in a data section
>> rather than having it interleaved with the code.
>> This is controlled by command line flags and off by default.
> When would you want the flag on? When would you want the flag off?
The disadvantage of "outlining" the switch tables is the extra
constant pool load
incurred for loading the start address of the table into the register
The advantages are:
* cleaner code both on the llvm side and the generated side
which may be beneficial for the ARM JIT (though I have not looked at this).
* no PIC problems in the text section as we just move the relocatable
* better instruction density in the text section as jumptables can
grow quite large subsequently and may cause certain offsets to overflow
* also AFAIK jumptables are the only "bigger than wordsize" data item in text.
The constant pools usually just contain 32bit quantities. In a past
life this made
it hard for me to binary rewrite arm executables.
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
More information about the llvm-dev