[llvm-bugs] [Bug 40681] New: [X86] LLVM 7.0.x optimises out variable init at -O1
via llvm-bugs
llvm-bugs at lists.llvm.org
Sun Feb 10 11:02:03 PST 2019
https://bugs.llvm.org/show_bug.cgi?id=40681
Bug ID: 40681
Summary: [X86] LLVM 7.0.x optimises out variable init at -O1
Product: libraries
Version: 7.0
Hardware: PC
OS: All
Status: NEW
Severity: enhancement
Priority: P
Component: Backend: X86
Assignee: unassignedbugs at nondot.org
Reporter: vit9696 at avp.su
CC: craig.topper at gmail.com, llvm-bugs at lists.llvm.org,
llvm-dev at redking.me.uk, spatel+llvm at rotateright.com
Created attachment 21463
--> https://bugs.llvm.org/attachment.cgi?id=21463&action=edit
Test C file
LLVM 7.0 generates invalid code optimises out variable zeroing for 32-bit X86
at -O1 or higher when sanitizers are enabled. I was able to reproduce the issue
with AddressSanitizer or UndefinedBehaviorSanitizer enabled, yet I believe they
are just the trigger point. The IR looks fine, so most likely the issue lies in
LLVM itself.
The bug is not reproducible on LLVM 8.0 or trunk. If LLVM 7.1 release is
abandoned, it should be closed, otherwise I believe it is to be release
blocker.
Test example is provided in the attachment. Both C file and generated .S file.
clang -S -c -target i386-gnu-linux -march=pentium2 -pipe -nostdinc
-fno-asynchronous-unwind-tables -O1 -fno-builtin -I. -fno-omit-frame-pointer
-m32 -fno-stack-protector -fsanitize=address -c d.c -o d.S
Relevant comments for generated asm:
pushl %esi
...
# implicit-def: $esi ; allocates r temporary in %esi, which is filled with
random data
...
movl %esi, -16(%ebp)
...
calll func1
testl %eax, %eax
movl -16(%ebp), %ecx ; writes random data to %ecx
cmovsl %eax, %ecx ; if (%eax < 0) %ecx = %eax
movl %ecx, -16(%ebp) ; %ecx is returned back to stack
...
jns .LBB0_11 → if (%eax < 0) goto 11
jmp .LBB0_19
...
.LBB0_19:
...
movl -16(%ebp), %eax ; function returns random data when func1 returns >= 0
...
ret
--
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/20190210/4da1482a/attachment.html>
More information about the llvm-bugs
mailing list