[LLVMdev] Passing DW_TAG_typedef as the type to DIBuilder's createFunction

Eric Christopher echristo at gmail.com
Tue Apr 16 22:40:48 PDT 2013


On Tue, Apr 16, 2013 at 10:39 PM, Duncan Sands <baldrick at free.fr> wrote:
> Hi Eric,
>
>>> But then we still don't emit anything about the function (& neither does
>>> GCC).
>>> So make it a member function (so we are forced to emit the declaration
>>> even without complicating the example by having to add a definition
>>> (which by necessity cannot use the typedef))... and then we see that
>>> the subprogram description doesn't refer to a function type at all. It
>>> refers to a return type and it has its own parameters directly. (
>>> typedef int foo(int); struct bar { foo f; }; int main() { bar b;
>>> b.f(3); }; )
>>>
>>
>> I couldn't come up with any code to make it the type of a function
>> rather than a function pointer or a member variable that happens to be
>> a function pointer. :)
>
>
> I guess you only tried obscure languages like C and C++ :)  I don't see why
> it
> shouldn't be theoretically possible, for some language.  But as David

Exactly! :)

> explained
> to me, the current design is pragmatic: do something that works for the
> front-ends we have; extend when necessary.  I've got to admit that as far as
> dragonegg is concerned, it looks like there will always be an appropriate
> function type floating around that can be used, so I plan to just fix this
> up
> in dragonegg and worry about funky languages when and if they show up one
> day.
>

No worries. I just wanted to see how it went and how to create
something that made sense to me.

Thanks!

-eric



More information about the llvm-dev mailing list