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)11 ustr_xi__embed_val_get(const unsigned char *data)
12 {
13   return (unsigned int)data[0];
14 }
15 
zero(void)16 int __attribute__((noinline)) zero(void) { return 0; }
17 
18 static unsigned int
ustr_len(const struct Ustr * s1)19 ustr_len(const struct Ustr *s1)
20 {
21   return ustr_xi__embed_val_get(s1->data + 1 + zero());
22 }
23 
24 int
main()25 main()
26 {
27   if (ustr_len (((struct Ustr *) "\x01" "\x0002" "s2")) != 2)
28     abort ();
29 
30   return 0;
31 }
32