[LLVMdev] Clang's approach to anonymous struct pointer parameters
Florian Brandner
flbr at imm.dtu.dk
Sun Jan 20 05:38:47 PST 2013
Hi Rick,
this is a bug in Clang's LLVM-IR code generator:
http://llvm.org/bugs/show_bug.cgi?id=14920
Best,
Florian
On Sunday, January 20, 2013 01:57:37 Rick Mann wrote:
> For the following code:
>
> struct XBeePacket;
>
> typedef void (*CompletionProc)(XBeePacket* inPacket, void* inParam2);
>
> struct
> XBeePacket
> {
> bool mField1;
> CompletionProc mCompletionProc;
> };
>
> Why does clang emit this IR?
>
> %struct.XBeePacket = type { i8, {}* }
>
> define void
> @MyCompletionProc(%struct.XBeePacket* %inPacket, i8* %inParam2)
> nounwind uwtable ssp
> {
> entry:
> ...
> }
>
> It makes the struct field for the completion proc an an anonymous aggregate pointer. Is that better than making the first parameter to MyCompletionProc void* or something similar?
>
> I guess there's no way in LLVM IR to forward-declare in a way that solves this, huh?
>
>
--
Florian Brandner
Embedded Systems Engineering Group
Department of Applied Mathematics and Computer Science
Technical University of Denmark
Richard Petersens Plads
Building 322, room 206
2800 Lyngby
Denmark
phone: +45 45255223
web: http://www.imm.dtu.dk/~flbr/
email: flbr at imm.dtu.dk
More information about the llvm-dev
mailing list