This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/35356] New: Missing Index splitting support in gcc
- From: "xinliangli at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Feb 2008 04:55:05 -0000
- Subject: [Bug middle-end/35356] New: Missing Index splitting support in gcc
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
The following cases are not handled by gcc:
case 1:
Example 28: search loop -- yes it is silly, but exists in real program:
for (i = 0; i < n; i++)
{
if ( i == k)
a[i] = ...
}
Should eliminate the loop and generate:
if (k >= 0 && k < n)
a[k] = ....
case 2:
for (i = 0; i < n; i++)
{
if (i == k)
a[i] = 1;
else
a[i] = i;
}
Should be converted into:
for (i = 0; i < min (n, k); i++)
a[i] = i;
if (k >= 0 && k < n)
a[k] = 1;
for (i = max(k+1,0); i < n; i++)
a[i] = i;
case 3 (similar to case 1): (from art)
int winner,numf1s,numf2s, resonant,cp,numpatterns;
double **tds;
double d, tsum;
typedef struct {
double y;
int reset;
} xyz;
xyz *Y;
int ti;
void match()
{
int tj,tresult;
for (tj=0;tj<numf2s;tj++)
{
if ((tj == winner) &&(Y[tj].y > 0))
tsum += tds[ti][tj] * d;
}
}
--
Summary: Missing Index splitting support in gcc
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: xinliangli at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35356