optimization/9814: gcc fails to optimise if (l&2) l|=2 away
Matthias Klose
doko@net.local
Sun Feb 23 07:46:00 GMT 2003
>Number: 9814
>Category: optimization
>Synopsis: gcc fails to optimise if (l&2) l|=2 away
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: unassigned
>State: open
>Class: change-request
>Submitter-Id: net
>Arrival-Date: Sun Feb 23 07:46:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: herbert@gondor.apana.org.au
>Release: 3.2.2 (Debian) (Debian unstable)
>Organization:
The Debian Project
>Environment:
System: Debian GNU/Linux (unstable)
Architecture: i686
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-==============-==============-============================================
ii gcc-3.2 3.2.3-0pre1 The GNU C compiler
ii g++-3.2 3.2.3-0pre1 The GNU C++ compiler
ii libstdc++5 3.2.3-0pre1 The GNU Standard C++ Library v3
ii libstdc++5-dev 3.2.3-0pre1 The GNU Standard C++ Library v3 (development
ii binutils 2.13.90.0.18-1 The GNU assembler, linker and binary utiliti
ii libc6 2.3.1-13 GNU C Library: Shared libraries and Timezone
host: i386-linux
>Description:
[ Reported to the Debian BTS as report #181096.
Please CC 181096@bugs.debian.org on replies.
Log of report can be found at http://bugs.debian.org/181096 ]
Checked with current 3.2 and 3.3 branches (20030221)
The following function doesn't get optimised away as a noop:
int k(int l)
{
if (l & 2)
l |= 2;
return l;
}
$ gcc-3.2 -O2 -S b.c
$ cat b.s
.file "b.c"
.text
.p2align 2,,3
.globl k
.type k,@function
k:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
testl $2, %eax
je .L2
orl $2, %eax
.L2:
leave
ret
.Lfe1:
.size k,.Lfe1-k
.ident "GCC: (GNU) 3.2.3 20030210 (Debian prerelease)"
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list