This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/21278] New: Move maximum out of a loop
- From: "tkoenig at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 29 Apr 2005 08:17:36 -0000
- Subject: [Bug tree-optimization/21278] New: Move maximum out of a loop
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
This could help in reducing the amount of work for bounds
checking.
$ cat mymax.c
#include <stdlib.h>
#include <stdio.h>
int main()
{
char *p;
int i,j,n;
scanf("%d",&n);
j = 0;
for (i=0; i<n; i++)
{
if (j < i)
j = i;
}
printf("%d\n",j);
return 0;
}
$ gcc -g -funroll-all-loops -S -O3 -fdump-tree-optimized mymax.c
still does the do loop:
<L13>:;
j = 0;
i = 0;
<L0>:;
j = MAX_EXPR <j, i>;
i = i + 1;
if (i != n.10) goto <L0>; else goto <L4>;
when the loop could be optimized to
if (n <= 0)
j = 0;
else
j = n-1;
--
Summary: Move maximum out of a loop
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P2
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tkoenig at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21278