[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