Issue 133021
Summary [Clang] Missed strlen despite unreachable() in noinline increment function.
Labels
Assignees
Reporter BreadTom
    https://godbolt.org/z/z9q399GEe
C code:
```
#include <stddef.h>

__attribute__((noinline))
size_t inc(size_t n){
    return n + 1;
}

size_t f0(char *str){
    size_t i = 0;
    for(; str[i] != '\0';++i){
    }
    return i;
}

size_t f1(char *str){
    size_t i = 0;
    for(; str[i] != '\0';){
 if(inc(i) != (size_t)(i + 1))
            __builtin_unreachable();
 i = inc(i);
    }
    return i;
}
```
Clang should be able to optimize f1() to strlen or at least to f0().
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to