/* { dg-do run } */ /* { dg-options "-O3" } */ #define PACKED __attribute__(( packed )) struct PACKED aostk_point_u8 { unsigned char x; unsigned char y; }; struct PACKED aostk_size_u8 { unsigned char width; unsigned char height; }; struct PACKED aostk_glyph { unsigned short i; struct aostk_size_u8 size; char top; struct aostk_point_u8 advance; unsigned char pitch; unsigned char* data; char left; }; struct PACKED aostk_font { unsigned short numglyphs; unsigned char height; struct aostk_glyph* glyphs; }; struct aostk_font glob_font; static struct aostk_glyph* aostk_get_glyph(struct aostk_font* f, unsigned int c) { return f->glyphs; } int aostk_font_strwidth(struct aostk_font* font, const char* str) { struct aostk_glyph* g = aostk_get_glyph(font, 0); return (g != 0); } struct aostk_font* __attribute__ ((noinline, noclone)) get_some_font (void) { return &glob_font; } int main (int argc, char *argv[]) { return (int) aostk_font_strwidth (get_some_font (), "sth"); }