Related articles |
---|
C Pointer Arithmetic -> Array Reference gagnon@bluebeard.cs.mcgill.ca (Etienne GAGNON) (1994-09-17) |
Re: C Pointer Arithmetic -> Array Reference schooler@apollo.hp.com (1994-09-19) |
Newsgroups: | comp.compilers |
From: | schooler@apollo.hp.com (Richard Schooler) |
Keywords: | analysis, optimize |
Organization: | HP/Apollo Massachusetts Language Lab |
References: | 94-09-092 |
Date: | Mon, 19 Sep 1994 14:36:14 GMT |
Etienne GAGNON <gagnon@bluebeard.cs.mcgill.ca> writes:
Does anyone know about books, articles or papers written on
converting pointer arithmetic to array reference automatically?
e.g.: main() ===>> main()
{ {
int a[100]; int a[100];
int *p; int *p;
int i; int i;
p = a; p = a;
for( i=0; i<100; i++ ) for( i=0; i<100; i++ )
{ {
*p = 0; ===>> /* pointer arithmetic p++ removed */
p++; ===>> a[i] = 0; /* or p[i]=0 */
} }
} }
Why would you want to do such a thing? To be able to do dependence
analysis, loop transforms, etc.? If so, I would recommend the approach of
compiling into canonical forms that abstract away the difference between
the pointer and array source forms. For instance, doing induction
variable analysis essentially does the above transform, in that it
"decorates" the use of "p" with the information that this expression has
an initial value of "&a", and that it increments by "sizeof(int)" every
time around the loop. A little type-based delinearization for
multi-dimensional arrays, and you're done!
-- Richard
--
Richard Schooler Hewlett-Packard
schooler@ch.hp.com 300 Apollo Drive
(508) 436-5452 fax:5135 Chelmsford, MA 01824
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.