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)15int 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