james woodyatt
2010-Mar-11 05:33 UTC
[LLVMdev] setting parameter attributes on function returns
everyone-- Maybe I'm missing it, but I don't see how to apply parameter attributes to function return types in either the C-language or OCaml bindings. Can anybody help clue me in? Thanks. — j h woodyatt <jhw at conjury.org> http://jhw.vox.com/
james woodyatt
2010-Mar-12 21:49 UTC
[LLVMdev] setting parameter attributes on function returns
On Mar 10, 2010, at 21:33, james woodyatt wrote:> > Maybe I'm missing it, but I don't see how to apply parameter attributes to function return types in either the C-language or OCaml bindings. Can anybody help clue me in? Thanks.I hope I can assume from the lack of response to my question that the answer is No, I'm not missing anything: the functionality is missing from both the C-language and OCaml bindings. Should I also assume that this is an oversight and that a patch would be welcome? — j h woodyatt <jhw at conjury.org> http://jhw.vox.com/
Bill Wendling
2010-Mar-12 23:00 UTC
[LLVMdev] setting parameter attributes on function returns
On Mar 12, 2010, at 1:49 PM, james woodyatt wrote:> On Mar 10, 2010, at 21:33, james woodyatt wrote: >> >> Maybe I'm missing it, but I don't see how to apply parameter attributes to function return types in either the C-language or OCaml bindings. Can anybody help clue me in? Thanks. > > I hope I can assume from the lack of response to my question that the answer is No, I'm not missing anything: the functionality is missing from both the C-language and OCaml bindings. Should I also assume that this is an oversight and that a patch would be welcome? >I'll respond. :-) What is it you want? You say "parameter attributes", but a return type isn't a parameter (as far as I know). And I don't believe that C allows you to specify an attribute on a return type itself. Let's hypothesize, though. If you want to apply an attribute to a type, then you may do so in the GCC way with the __attribute__(()) syntax: struct A { int f[3]; } __attribute__((aligned(8))); or: typedef int foo __attribute__((aligned(13))); and then use that in with your functions: foo func() { foo f = 37; /* ... */ return f; } If that's what you want, then we will place the attribute on the type itself (assuming it's an attribute we support and haven't forgotten to implement, etc.). -bw