[LLVMdev] patch for llc/ARM: added mechanism to move switch tables from .text -> .data; also cleanup and documentation

robert muth 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?
>
> -Eli


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
 entries elsewhere.
 * 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
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>




More information about the llvm-dev mailing list