http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50987
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-11-03 20:55:45 UTC --- generated.i:3:18: error: unknown type name 'BYTE' I think you need to regenerate the .i file. Anyways after fixing up the errors: typedef unsigned char BYTE; typedef unsigned int WORD; typedef unsigned long long DWORD; typedef int PROCESSOR_CACHE_TYPE; typedef int BOOL, *PBOOL, *LPBOOL; typedef int INT, *PINT, *LPINT; typedef struct _CACHE_DESCRIPTOR { BYTE Level; BYTE Associativity; WORD LineSize; DWORD Size; PROCESSOR_CACHE_TYPE Type; } *HDC; typedef BOOL ( *ABORTPROC)(HDC, INT); static void test_pack_ABORTPROC(void) { extern void __C_ASSERT__(int[(sizeof(ABORTPROC) == 4)?1:-1]); } --- CUT --- The problem is obvious, pointer size are 8 bytes on PPC64.