* gnat.dg/opt42.ad[sb]: New test.
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 Oct 2014 12:18:30 +0000 (12:18 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 31 Oct 2014 12:18:30 +0000 (12:18 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216972 138bc75d-0d04-0410-961f-82ee72b054a4

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 adc0e3e..e0d174d 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;