* gnat.dg/opt42.ad[sb]: New test.
authorEric Botcazou <ebotcazou@adacore.com>
Fri, 31 Oct 2014 12:18:30 +0000 (12:18 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Fri, 31 Oct 2014 12:18:30 +0000 (12:18 +0000)
From-SVN: r216972

gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/opt42.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/opt42.ads [new file with mode: 0644]

index adc0e3e366d26b38a302a8df1f610f9db6fb8d59..e0d174d4978be8a1464ea873aabb5c989435e7d0 100644 (file)
@@ -1,3 +1,7 @@
+2014-10-31  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/opt42.ad[sb]: New test.
+
 2014-10-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
        PR tree-optimization/63259
diff --git a/gcc/testsuite/gnat.dg/opt42.adb b/gcc/testsuite/gnat.dg/opt42.adb
new file mode 100644 (file)
index 0000000..620f61a
--- /dev/null
@@ -0,0 +1,22 @@
+-- { dg-do compile }
+-- { dg-options "-cargs --param max-completely-peeled-insns=200 -margs -O3" }
+
+package body Opt42 is
+
+   function "*" (Left, Right : in Array_Type) return Array_Type is
+      Temp   : Float;
+      Result : Array_Type;
+   begin
+      for I in Index_Type loop
+         for J in Index_Type loop
+            Temp := 0.0;
+            for K in Index_Type loop
+               Temp := Temp + Left (I) (K) * Right (K) (J);
+            end loop;
+            Result (I) (J) := Temp;
+         end loop;
+      end loop;
+      return Result;
+   end "*";
+
+end Opt42;
diff --git a/gcc/testsuite/gnat.dg/opt42.ads b/gcc/testsuite/gnat.dg/opt42.ads
new file mode 100644 (file)
index 0000000..3d6a3c1
--- /dev/null
@@ -0,0 +1,9 @@
+package Opt42 is
+
+   type Index_Type is range 1 .. 7;
+   type Row_Type is array (Index_Type) of Float;
+   type Array_Type is array (Index_Type) of Row_Type;
+
+   function "*" (Left, Right : in Array_Type) return Array_Type;
+
+end Opt42;