[llvm-bugs] [Bug 46356] New: Wrong optimization of a division by zero
via llvm-bugs
llvm-bugs at lists.llvm.org
Tue Jun 16 18:39:20 PDT 2020
https://bugs.llvm.org/show_bug.cgi?id=46356
Bug ID: 46356
Summary: Wrong optimization of a division by zero
Product: clang
Version: 10.0
Hardware: PC
OS: Linux
Status: NEW
Severity: release blocker
Priority: P
Component: C
Assignee: unassignedclangbugs at nondot.org
Reporter: qianjh at cn.fujitsu.com
CC: blitzrakete at gmail.com, dgregor at apple.com,
erik.pilkington at gmail.com, llvm-bugs at lists.llvm.org,
richard-llvm at metafoo.co.uk
The expression x/x is optimised to 1 when use -O1 or -O2 or -O3 option.
If x is 0, the result is not right. So this optimisation is wrong.
test case:
-----------------------------------------
#include <stdio.h>
unsigned foo(unsigned x) {
return x/x;
}
int main()
{
printf("result is %d\n", foo(0));
}
test commands:
-----------------------------------------
#clang --version
clang version 10.0.0
Target: x86_64-unknown-linux-gnu
Thread model: posix
#clang -O1 div.c
#./a.out
result is 1
#clang -O1 div.c -S
#cat div.s
.text
.file "div.c"
.globl foo # -- Begin function foo
.p2align 4, 0x90
.type foo, at function
foo: # @foo
.cfi_startproc
# %bb.0: # %entry
movl $1, %eax
retq
.Lfunc_end0:
.size foo, .Lfunc_end0-foo
......
I tested this in trunk, and get the same result.
--
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/20200617/317bfa1b/attachment.html>
More information about the llvm-bugs
mailing list