OSDN Git Service

* gcc-interface/ada-tree.h (DECL_LOOP_PARM_P): New flag.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gnat.dg / vect3.adb
1 -- { dg-do compile { target i?86-*-* x86_64-*-* } }
2 -- { dg-options "-O3 -msse2 -fdump-tree-vect-details" }
3
4 package body Vect3 is
5
6    function "+" (X, Y : Varray) return Varray is
7       R : Varray (X'Range);
8    begin
9       for I in X'Range loop
10          R(I) := X(I) + Y(I);
11       end loop;
12       return R;
13    end;
14
15    procedure Add (X, Y : not null access Varray; R : not null access Varray) is
16    begin
17       for I in X'Range loop
18          R(I) := X(I) + Y(I);
19       end loop;
20    end;
21
22
23    function "+" (X, Y : Sarray) return Sarray is
24       R : Sarray;
25    begin
26       for I in Sarray'Range loop
27          R(I) := X(I) + Y(I);
28       end loop;
29       return R;
30    end;
31
32    procedure Add (X, Y : not null access Sarray; R : not null access Sarray) is
33    begin
34       for I in Sarray'Range loop
35          R(I) := X(I) + Y(I);
36       end loop;
37    end;
38
39
40    function "+" (X, Y : Darray1) return Darray1 is
41       R : Darray1;
42    begin
43       for I in Darray1'Range loop
44          R(I) := X(I) + Y(I);
45       end loop;
46       return R;
47    end;
48
49    procedure Add (X, Y : not null access Darray1; R : not null access Darray1) is
50    begin
51       for I in Darray1'Range loop
52          R(I) := X(I) + Y(I);
53       end loop;
54    end;
55
56
57    function "+" (X, Y : Darray2) return Darray2 is
58       R : Darray2;
59    begin
60       for I in Darray2'Range loop
61          R(I) := X(I) + Y(I);
62       end loop;
63       return R;
64    end;
65
66    procedure Add (X, Y : not null access Darray2; R : not null access Darray2) is
67    begin
68       for I in Darray2'Range loop
69          R(I) := X(I) + Y(I);
70       end loop;
71    end;
72
73
74    function "+" (X, Y : Darray3) return Darray3 is
75       R : Darray3;
76    begin
77       for I in Darray3'Range loop
78          R(I) := X(I) + Y(I);
79       end loop;
80       return R;
81    end;
82
83    procedure Add (X, Y : not null access Darray3; R : not null access Darray3) is
84    begin
85       for I in Darray3'Range loop
86          R(I) := X(I) + Y(I);
87       end loop;
88    end;
89
90 end Vect3;
91
92 -- { dg-final { scan-tree-dump-times "vectorized 1 loops" 10 "vect"  } }
93 -- { dg-final { cleanup-tree-dump "vect" } }