[ast-optimizer-branch] PATCH to simplify array base

Jason Merrill jason@redhat.com
Fri Jun 7 23:04:00 GMT 2002

We haven't been simplifying array bases, but we should.  Given an
expression like k.d[2][3] where k.d is of type int[3][4], this will now
simplify to

  int (*t1)[3][4];
  int t2;
  t1 = &k.d;
  t2 = (*t1)[2][3];

This is still an extension from the published SIMPLE grammar, but I believe
this was omitted there because the McCAT version of ARRAY_REF takes a
POINTER_TYPE argument, whereas the gcc version takes an ARRAY_TYPE.  It
seems to me that it would make sense for gcc to support POINTER_TYPE
arguments as well, so that we can retain information about array indexing
off of pointers, but that can wait.

Booted and tested i686-pc-linux-gnu, applied ast-optimizer-branch.

2002-06-08  Jason Merrill  <jason@redhat.com>

	* tree-simple.c (is_simple_arraybase): New function.
	(is_simple_arrayref): Use it to check the array base again.
	* tree-simple.h: Add declaration.
	* c-simplify.c (simplify_array_ref): Do simplify the base.
	* expr.c (expand_expr): First make sure the type has a size.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/x-patch
Size: 6167 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20020607/edb3b4e8/attachment.bin>

More information about the Gcc-patches mailing list