[PATCH] Add a jumptable attribute and support for creating jump-instruction tables

Tom Roeder tmroeder at google.com
Mon May 5 12:47:01 PDT 2014


Ping. I've broken this large patch up into 5 smaller patches. As I
noted in my previous message, most of these patches don't have any
external effect. Also, I've checked to make sure that all the
regression tests pass after applying each one. See attached.

Can anyone comment on the first one? (jt-1.patch). That patch adds a
jumptable function attribute that doesn't do anything yet.

On Mon, Apr 28, 2014 at 2:38 PM, Tom Roeder <tmroeder at google.com> wrote:
> ping.
>
> I could break this up into smaller patches, if that would help.
> However, some of these patches wouldn't do much (e.g, a patch that
> adds the jumptable attribute but doesn't do anything with it).
>
>
>
> On Mon, Apr 21, 2014 at 10:02 AM, Tom Roeder <tmroeder at google.com> wrote:
>> Ping
>>
>> On Fri, Apr 11, 2014 at 3:00 PM, Tom Roeder <tmroeder at google.com> wrote:
>>> This patch provides a new jumptable attribute and associated CodeGen support to generate jump-instruction tables and replace function references for jumptable-annotated functions. The work of generating the tables is now done with an IR pass in CodeGen to replace address-taken functions, along with a change to AsmPrinter to generate the assembly for the tables. This is a followup to the discussion on llvmdev. See http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-April/071866.html
>>>
>>> This version of the patch has support for X86 and ARM backends, along with tests for each.
>>>
>>> http://reviews.llvm.org/D3361
>>>
>>> Files:
>>>   docs/LangRef.rst
>>>   include/llvm/Analysis/JumpInstrTableInfo.h
>>>   include/llvm/Analysis/Passes.h
>>>   include/llvm/Bitcode/LLVMBitCodes.h
>>>   include/llvm/CodeGen/JumpInstrTables.h
>>>   include/llvm/CodeGen/Passes.h
>>>   include/llvm/IR/Attributes.h
>>>   include/llvm/InitializePasses.h
>>>   include/llvm/LinkAllPasses.h
>>>   include/llvm/Target/TargetInstrInfo.h
>>>   lib/Analysis/Analysis.cpp
>>>   lib/Analysis/CMakeLists.txt
>>>   lib/Analysis/JumpInstrTableInfo.cpp
>>>   lib/AsmParser/LLLexer.cpp
>>>   lib/AsmParser/LLParser.cpp
>>>   lib/AsmParser/LLToken.h
>>>   lib/Bitcode/Reader/BitcodeReader.cpp
>>>   lib/Bitcode/Writer/BitcodeWriter.cpp
>>>   lib/CodeGen/AsmPrinter/AsmPrinter.cpp
>>>   lib/CodeGen/CMakeLists.txt
>>>   lib/CodeGen/JumpInstrTables.cpp
>>>   lib/CodeGen/LLVMTargetMachine.cpp
>>>   lib/IR/Attributes.cpp
>>>   lib/IR/Verifier.cpp
>>>   lib/LTO/LTOCodeGenerator.cpp
>>>   lib/Target/ARM/ARMBaseInstrInfo.cpp
>>>   lib/Target/ARM/ARMBaseInstrInfo.h
>>>   lib/Target/X86/X86InstrInfo.cpp
>>>   lib/Target/X86/X86InstrInfo.h
>>>   lib/Transforms/IPO/IPO.cpp
>>>   test/Bitcode/attributes.ll
>>>   test/CodeGen/ARM/jump_tables.ll
>>>   test/CodeGen/X86/jump_table_bitcast.ll
>>>   test/CodeGen/X86/jump_tables.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jt-1.patch
Type: text/x-patch
Size: 7700 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140505/993dc6fd/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jt-2.patch
Type: text/x-patch
Size: 5088 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140505/993dc6fd/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jt-3.patch
Type: text/x-patch
Size: 7306 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140505/993dc6fd/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jt-4.patch
Type: text/x-patch
Size: 15430 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140505/993dc6fd/attachment-0003.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jt-5.patch
Type: text/x-patch
Size: 20451 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140505/993dc6fd/attachment-0004.bin>


More information about the llvm-commits mailing list