1 /* { dg-do compile } */
2 /* { dg-options "-O2 -w -fdump-tree-dom2-details" } */
3 
4 #include <string.h>
5 
6 typedef struct string_s {
7   unsigned long size, alloc;
8   char *ptr;
9 } string_t[1];
10 
11 # define M_ASSUME(x)                                    \
12   (! __builtin_constant_p (!!(x) || !(x)) || (x) ?      \
13    (void) 0 : __builtin_unreachable())
14 
f(string_t s)15 int f(string_t s)
16 {
17   M_ASSUME(strlen(s->ptr) == s->size);
18   return s->size;
19 }
20 
21 /* { dg-final { scan-assembler-not "strlen" } } */
22 
23