/* { dg-do run } */ extern void abort (void); struct Ustr { unsigned char data[1]; }; static unsigned int ustr_xi__embed_val_get(const unsigned char *data) { return (unsigned int)data[0]; } int __attribute__((noinline)) zero(void) { return 0; } static unsigned int ustr_len(const struct Ustr *s1) { return ustr_xi__embed_val_get(s1->data + 1 + zero()); } int main() { if (ustr_len (((struct Ustr *) "\x01" "\x0002" "s2")) != 2) abort (); return 0; }