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