1 /* { dg-do run } */ 2 3 extern void abort (void); 4 5 struct Ustr 6 { 7 unsigned char data[1]; 8 }; 9 10 static unsigned int ustr_xi__embed_val_get(const unsigned char * data)11ustr_xi__embed_val_get(const unsigned char *data) 12 { 13 return (unsigned int)data[0]; 14 } 15 zero(void)16int __attribute__((noinline)) zero(void) { return 0; } 17 18 static unsigned int ustr_len(const struct Ustr * s1)19ustr_len(const struct Ustr *s1) 20 { 21 return ustr_xi__embed_val_get(s1->data + 1 + zero()); 22 } 23 24 int main()25main() 26 { 27 if (ustr_len (((struct Ustr *) "\x01" "\x0002" "s2")) != 2) 28 abort (); 29 30 return 0; 31 } 32