[llvm-bugs] [Bug 49389] New: Condition not constant folded
via llvm-bugs
llvm-bugs at lists.llvm.org
Mon Mar 1 19:41:15 PST 2021
https://bugs.llvm.org/show_bug.cgi?id=49389
Bug ID: 49389
Summary: Condition not constant folded
Product: libraries
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: enhancement
Priority: P
Component: Scalar Optimizations
Assignee: unassignedbugs at nondot.org
Reporter: jmuizelaar at mozilla.com
CC: llvm-bugs at lists.llvm.org
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#define N 1234
bool eat_digits(uint8_t s[N]) {
size_t i = 0;
while (i < N) {
uint8_t c = s[i];
if ('0' <= c && c <= '9') {
i += 1;
} else {
break;
}
}
return i <= N;
}
compiles to:
eat_digits: # @eat_digits
xor ecx, ecx
.LBB0_1: # =>This Inner Loop Header: Depth=1
mov rax, rcx
cmp rcx, 1234
je .LBB0_3
movzx edx, byte ptr [rdi + rax]
add dl, -48
lea rcx, [rax + 1]
cmp dl, 10
jb .LBB0_1
.LBB0_3:
cmp rax, 1235
setb al
ret
GCC is able to compile it to:
eat_digits:
mov eax, 1
ret
Adding -mllvm -enable-constraint-elimination doesn't help.
This is originally from: https://github.com/rust-lang/rust/issues/81432
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210302/937e11c7/attachment-0001.html>
More information about the llvm-bugs
mailing list