[LLVMdev] RFC: Metadata attachments to function definitions

Duncan P. N. Exon Smith dexonsmith at apple.com
Thu Apr 16 14:24:14 PDT 2015


> On 2015-Apr-16, at 12:15, Diego Novillo <dnovillo at google.com> wrote:
> 
> 
> 
> On 04/15/15 12:55, Duncan P. N. Exon Smith wrote:
>>> On 2015-Apr-15, at 08:11, Ivan Baev <ibaev at codeaurora.org> wrote:
>>> 
>>>> Date: Tue, 14 Apr 2015 21:33:03 -0700
>>>> From: "Duncan P. N. Exon Smith" <dexonsmith at apple.com>
>>>> To: LLVM Developers Mailing List <llvmdev at cs.uiuc.edu>
>>>> Subject: [LLVMdev] RFC: Metadata attachments to function definitions
>>>> Message-ID: <BF4002F0-06DC-4A25-AF84-7D21AD48121A at apple.com>
>>>> Content-Type: text/plain; charset=us-ascii
>>>> 
>>>> 
>>>> `Function` definitions should support `MDNode` attachments, with a
>>>> similar syntax to instructions:
>>>> 
>>>>    define void @foo() nounwind !attach !0 {
>>>>      unreachable
>>>>    }
>>>>    !0 = !{}
>>>> 
>>>> Attachments wouldn't be allowed on declarations, just definitions.
>>>> 
>>>> There are two open problems this can help with:
>>>> 
>>>> 1. For PGO, we need somewhere to attach the function entry count.
>>>>    Attaching to the function definition is a simple solution.
>>>> 
>>>>        define void @foo() !prof !0 {
>>>>          unreachable
>>>>        }
>>>>        !0 = !{i32 987}
>>> 
>>> That will be great. Would it be better if the type is i64? We really want
>>> to avoid an overflow if possible. What is the type for the raw profile
>>> data for region(0)?
>> Right, of course; `i64` makes more sense for entry counts.  BTW, I'm not
>> volunteering to implement this one myself, just to provide the metadata
>> infrastructure.
> 
> Since I need to add this, I'll put it on my todo list.

Already clarified over IRC, but FTR: I *will* implement metadata attachments
to functions, but likely won't be doing the work to use them for PGO.



More information about the llvm-dev mailing list