[LLVMbugs] [Bug 23672] New: more optimize oppotunity
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Wed May 27 00:38:20 PDT 2015
https://llvm.org/bugs/show_bug.cgi?id=23672
Bug ID: 23672
Summary: more optimize oppotunity
Product: clang
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P
Component: -New Bugs
Assignee: unassignedclangbugs at nondot.org
Reporter: ishiura-compiler at ml.kwansei.ac.jp
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
We compiled a program (A.c) by LLVM/Clang-3.7.0 and GCC-6.0.0 with -O3 option.
Although Clang/LLVM performed better optimization on this code (idvil is
eliminated),
the three instructions (incl, cmpl, jae) for BB#1 look totally useless and we
wonder why they could not be deleted.
(A.c)
int x = 1;
int main (void)
{
int t = 1/x;
if (t == 1) ;
else __builtin_abort();
return 0;
}
+------------------------------------------------------------+--------------------------------------------------------+
| gcc.s (gcc A.c -O3 -S) |
clang.s (clang A.c -O3 -S) |
+------------------------------------------------------------+--------------------------------------------------------+
|main: |
*
|.LFB11: |main:
# @main *
| .cfi_startproc |
.cfi_startproc |
| movl $1, %eax |# BB#0:
# %entry *
| cltd |
|
| idivl x1638(%rip) |
|
| cmpl $1, %eax |
|
| jne .L5 |
|
| xorl %eax, %eax |
|
| ret |
|
|.L5: |
|
| pushq %rax | pushq
%rax |
| |.Ltmp0:
*
| .cfi_def_cfa_offset 16 |
.cfi_def_cfa_offset 16 |
| call abort | movl
x1638(%rip), %eax *
| | cmpl
$1, %eax *
| | jne
.LBB0_3 *
| |# BB#1:
# %entry *
| | incl
%eax # <--HERE *
| | cmpl
$3, %eax # <--HERE *
| | jae
.LBB0_3 # <--HERE *
| |# BB#2:
# %if.end *
| | xorl
%eax, %eax *
| | popq
%rdx *
| | retq
*
| |.LBB0_3:
# %if.else *
| | callq
abort *
| |.Ltmp1:
*
| | .size
main, .Ltmp1-main *
| .cfi_endproc |
.cfi_endproc |
|.LFE11: |
*
| .size main, .-main | .type
x1638, at object # @x1638 *
| .section .text.unlikely |
|
|.LCOLDE0: |
|
| .section .text.startup |
|
|.LHOTE0: |
|
| .globl x1638 |
|
| .data | .data
|
| .align 4 | .globl
x1638 *
| .type x1638, @object | .align 4
*
| .size x1638, 4 |
|
|x1638: |x1638:
|
| .long 1 | .long 1
# 0x1 *
| | .size
x1638, 4 *
| |
*
+------------------------------------------------------------+--------------------------------------------------------+
clang version 3.7.0 (trunk 237801)
Target: x86_64-unknown-linux-gnu
Thread model: posix
gcc (GCC) 6.0.0 20150416 (experimental)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
--
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/20150527/efed83f8/attachment.html>
More information about the llvm-bugs
mailing list