OSDN Git Service

PR ada/54614
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 16 Dec 2012 10:40:32 +0000 (10:40 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 16 Dec 2012 10:40:32 +0000 (10:40 +0000)
Backport from mainline

2012-10-01  Vincent Pucci  <pucci@adacore.com>

* s-gearop.adb (Vector_Matrix_Product): Fix dimension check and index
of Left in S evaluation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@194534 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/s-gearop.adb

index 06fdd53..c32a316 100644 (file)
@@ -1,3 +1,13 @@
+2012-12-16  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR ada/54614
+       Backport from mainline
+
+       2012-10-01  Vincent Pucci  <pucci@adacore.com>
+
+       * s-gearop.adb (Vector_Matrix_Product): Fix dimension check and index
+       of Left in S evaluation.
+
 2012-12-15  Eric Botcazou  <ebotcazou@adacore.com>
 
        PR ada/53766
index db18a7e..6ef3926 100644 (file)
@@ -924,7 +924,7 @@ package body System.Generic_Array_Operations is
       R : Result_Vector (Right'Range (2));
 
    begin
-      if Left'Length /= Right'Length (2) then
+      if Left'Length /= Right'Length (1) then
          raise Constraint_Error with
            "incompatible dimensions in vector-matrix multiplication";
       end if;
@@ -935,7 +935,7 @@ package body System.Generic_Array_Operations is
 
          begin
             for K in Right'Range (1) loop
-               S := S + Left (J - Right'First (1) + Left'First) * Right (K, J);
+               S := S + Left (K - Right'First (1) + Left'First) * Right (K, J);
             end loop;
 
             R (J) := S;