OSDN Git Service

PR libfortran/24903
[pf3gnuchains/gcc-fork.git] / libgfortran / generated / dotprod_c16.c
index a526b53..82d5d49 100644 (file)
@@ -38,17 +38,17 @@ Boston, MA 02110-1301, USA.  */
 
 typedef GFC_ARRAY_DESCRIPTOR(GFC_MAX_DIMENSIONS, char) char_array;
 
-extern GFC_COMPLEX_16 dot_product_c16 (gfc_array_c16 * a, gfc_array_c16 * b);
+extern GFC_COMPLEX_16 dot_product_c16 (gfc_array_c16 * const restrict a, 
+       gfc_array_c16 * const restrict b);
 export_proto(dot_product_c16);
 
 /* Both parameters will already have been converted to the result type.  */
 GFC_COMPLEX_16
-dot_product_c16 (gfc_array_c16 * a, gfc_array_c16 * b)
+dot_product_c16 (gfc_array_c16 * const restrict a, gfc_array_c16 * const restrict b)
 {
-  GFC_COMPLEX_16 *pa;
-  GFC_COMPLEX_16 *pb;
+  const GFC_COMPLEX_16 * restrict pa;
+  const GFC_COMPLEX_16 * restrict pb;
   GFC_COMPLEX_16 res;
-  GFC_COMPLEX_16 conjga;
   index_type count;
   index_type astride;
   index_type bstride;
@@ -70,8 +70,7 @@ dot_product_c16 (gfc_array_c16 * a, gfc_array_c16 * b)
 
   while (count--)
     {
-      COMPLEX_ASSIGN(conjga, REALPART (*pa), -IMAGPART (*pa));
-      res += conjga * *pb;
+      res += __builtin_conjl (*pa) * *pb;
       pa += astride;
       pb += bstride;
     }