[fortran PATCH] Implement a(:,:) = 0.0 using memset

Andrew Pinski pinskia@gmail.com
Mon Dec 18 18:14:00 GMT 2006


On Mon, 2006-12-18 at 10:36 -0700, roger@eyesopen.com wrote:
> we currently generate the following with -fdump-tree-original
> 
>   int8 S.0;
> 
>   S.0 = 1;
>   while (1)
>     {
>       if (S.0 > 20) goto L.1; else (void) 0;
>       (*a)[NON_LVALUE_EXPR <S.0> + -1] = 0;
>       S.0 = S.0 + 1;
>     }
>   L.1:;
> 
> with the patch below, we now generate this instead.
> 
>   (void) __builtin_memset ((void *) a, 0, 80);

This optimization should really be done in the tree level and not done
in the front-end.

In fact Thomas from SUSE has a patch to do this (based on my original
patch):
http://www.gccsummit.org/2006/view_abstract.php?content_key=27

Thanks,
Andrew Pinski



More information about the Gcc-patches mailing list