[LLVMdev] Clang's approach to anonymous struct pointer parameters
Rick Mann
rmann at latencyzero.com
Sun Jan 20 01:57:37 PST 2013
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?
--
Rick
More information about the llvm-dev
mailing list