This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/23657] New: Wrong code generated: too much optimized out
- From: "qrczak at knm dot org dot pl" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 31 Aug 2005 16:05:27 -0000
- Subject: [Bug c/23657] New: Wrong code generated: too much optimized out
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
/* The result should be 7. When compiled with
gcc version 4.1.0 20050815 (experimental)
with some patches from PLD (incl. PR7776, PR20297, PR23128, PR22533, PR23386)
with -O, the result is 0. */
#include <stdio.h>
int arr[100];
int *alloc(void) {return arr;}
void fill(int n) {
int *result = alloc();
int *dest = result;
for(;;) {
int *next;
dest[0] = 7;
if (--n == 0) break;
next = dest + 1;
dest = next;
}
}
int main(void) {
fill(5);
printf("%d\n", arr[1]);
return 0;
}
/* Looking at the generated assembly code, the whole loop is optimized out,
except for filling the first element. Using less temporaries or inlining
alloc() makes the bug disappear. The bug manifests only with optimization
turned on. */
--
Summary: Wrong code generated: too much optimized out
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: qrczak at knm dot org dot pl
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23657