This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PING, Ada] Re: Handle data dependence relations with different bases


Ping for this Ada patch/question.

Richard Sandiford <richard.sandiford@linaro.org> writes:
> Richard Biener <richard.guenther@gmail.com> writes:
>>>> How does this look?  Changes since v1:
>>>>
>>>> - Added access_fn_component_p to check for valid access function components.
>>>>
>>>> - Added access_fn_components_comparable_p instead of using
>>>>   types_compatibloe_p directly.
>>>>
>>>> - Added more commentary.
>>>>
>>>> - Added local structures to represent the sequence, so that it's
>>>>   more obvious which variables are temporaries and which aren't.
>>>>
>>>> - Added the test above to vect-alias-check-3.c.
>>>>
>>>> Tested on aarch64-linux-gnu and x86_64-linux-gnu.
>>
>> This is ok.
>
> Thanks.  Just been retesting, and I think I must have forgotten
> to include Ada last time.  It turns out that the patch causes a dg-scan
> regression in gnat.dg/vect17.adb, because we now think that if the
> array RECORD_TYPEs *do* alias in:
>
>    procedure Add (X, Y : aliased Sarray; R : aliased out Sarray) is
>    begin
>       for I in Sarray'Range loop
>          R(I) := X(I) + Y(I);
>       end loop;
>    end;
>
> then the dependence distance must be zero.  Eric, does that hold true
> for Ada?  I.e. if X and R (or Y and R) alias, must it be the case that
> X(I) can only alias R(I) and not for example R(I-1) or R(I+1)?  Or are
> the arrays allowed to overlap by an arbitrary number of indices?
>
> If the assumption is correct, is the patch below OK?
>
> Thanks,
> Richard
>
>
> 2017-06-07  Richard Sandiford  <richard.sandiford@linaro.org>
>
> gcc/testsuite/
> 	* gnat.dg/vect17.ads (Sarray): Increase range to 1 .. 5.
> 	* gnat.dg/vect17.adb (Add): Create a dependence distance of 1
> 	when X = R or Y = R.
>
> Index: gcc/testsuite/gnat.dg/vect17.ads
> ===================================================================
> --- gcc/testsuite/gnat.dg/vect17.ads	2015-10-14 14:58:56.000000000 +0100
> +++ gcc/testsuite/gnat.dg/vect17.ads	2017-06-07 22:10:24.796368118 +0100
> @@ -1,6 +1,6 @@
>  package Vect17 is
>  
> -   type Sarray is array (1 .. 4) of Long_Float;
> +   type Sarray is array (1 .. 5) of Long_Float;
>     for Sarray'Alignment use 16;
>  
>     procedure Add (X, Y : aliased Sarray; R : aliased out Sarray);
> Index: gcc/testsuite/gnat.dg/vect17.adb
> ===================================================================
> --- gcc/testsuite/gnat.dg/vect17.adb	2015-10-14 14:58:56.000000000 +0100
> +++ gcc/testsuite/gnat.dg/vect17.adb	2017-06-07 22:10:24.796368118 +0100
> @@ -5,8 +5,9 @@ package body Vect17 is
>  
>     procedure Add (X, Y : aliased Sarray; R : aliased out Sarray) is
>     begin
> -      for I in Sarray'Range loop
> -         R(I) := X(I) + Y(I);
> +      R(1) := X(5) + Y(5);
> +      for I in 1 .. 4 loop
> +         R(I + 1) := X(I) + Y(I);
>        end loop;
>     end;
>  


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]