Hello Tristan,
I think the main issue is that EFI C dialect is not ANSI-C compliant: the size of pointer is determined at the run-time and therefore the layout of the structure is not static. Gcc doesn't support this model.
As I read some related information, LLVM IR doesn't care the size of pointer and the front end of LLVM is derived from GCC.I am wondering to know should I do some work at this aspect?? thanks yi-hong