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  
      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