extern void *malloc(__SIZE_TYPE__); extern void abort(void); extern void free(void *); typedef struct SEntry { unsigned char num; } TEntry; typedef struct STable { TEntry data[2]; } TTable; TTable *init () { return malloc(sizeof(TTable)); } void expect_func (int a, unsigned char *b) __attribute__ ((noinline)); static inline void inlined_wrong (TEntry *entry_p, int flag); void inlined_wrong (TEntry *entry_p, int flag) { unsigned char index; entry_p->num = 0; if (flag == 0) abort(); for (index = 0; index < 1; index++) entry_p->num++; if (!entry_p->num) { abort(); } } void expect_func (int a, unsigned char *b) { if (abs ((a == 0))) abort (); if (abs ((b == 0))) abort (); } int main () { unsigned char index = 0; TTable *table_p = init(); TEntry work; inlined_wrong (&(table_p->data[1]), 1); expect_func (1, &index); inlined_wrong (&work, 1); free (table_p); return 0; }