* m4/dotprodc.m4: Use __builtin_conj instead of assigning real
and imaginary parts separately.
* generated/dotprod_c4.c: Regenerated.
* generated/dotprod_c8.c: Regenerated.
* generated/dotprod_c10.c: Regenerated.
* generated/dotprod_c16.c: Regenerated.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111131
138bc75d-0d04-0410-961f-
82ee72b054a4
+2006-02-16 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/24903
+ * m4/dotprodc.m4: Use __builtin_conj instead of assigning real
+ and imaginary parts separately.
+ * generated/dotprod_c4.c: Regenerated.
+ * generated/dotprod_c8.c: Regenerated.
+ * generated/dotprod_c10.c: Regenerated.
+ * generated/dotprod_c16.c: Regenerated.
+
2006-02-12 Janne Blomqvist <jb@gcc.gnu.org>
PR libgfortran/25949
2006-02-12 Janne Blomqvist <jb@gcc.gnu.org>
PR libgfortran/25949
const GFC_COMPLEX_10 * restrict pa;
const GFC_COMPLEX_10 * restrict pb;
GFC_COMPLEX_10 res;
const GFC_COMPLEX_10 * restrict pa;
const GFC_COMPLEX_10 * restrict pb;
GFC_COMPLEX_10 res;
index_type count;
index_type astride;
index_type bstride;
index_type count;
index_type astride;
index_type bstride;
- COMPLEX_ASSIGN(conjga, REALPART (*pa), -IMAGPART (*pa));
- res += conjga * *pb;
+ res += __builtin_conjl (*pa) * *pb;
pa += astride;
pb += bstride;
}
pa += astride;
pb += bstride;
}
const GFC_COMPLEX_16 * restrict pa;
const GFC_COMPLEX_16 * restrict pb;
GFC_COMPLEX_16 res;
const GFC_COMPLEX_16 * restrict pa;
const GFC_COMPLEX_16 * restrict pb;
GFC_COMPLEX_16 res;
index_type count;
index_type astride;
index_type bstride;
index_type count;
index_type astride;
index_type bstride;
- COMPLEX_ASSIGN(conjga, REALPART (*pa), -IMAGPART (*pa));
- res += conjga * *pb;
+ res += __builtin_conjl (*pa) * *pb;
pa += astride;
pb += bstride;
}
pa += astride;
pb += bstride;
}
const GFC_COMPLEX_4 * restrict pa;
const GFC_COMPLEX_4 * restrict pb;
GFC_COMPLEX_4 res;
const GFC_COMPLEX_4 * restrict pa;
const GFC_COMPLEX_4 * restrict pb;
GFC_COMPLEX_4 res;
index_type count;
index_type astride;
index_type bstride;
index_type count;
index_type astride;
index_type bstride;
- COMPLEX_ASSIGN(conjga, REALPART (*pa), -IMAGPART (*pa));
- res += conjga * *pb;
+ res += __builtin_conjf (*pa) * *pb;
pa += astride;
pb += bstride;
}
pa += astride;
pb += bstride;
}
const GFC_COMPLEX_8 * restrict pa;
const GFC_COMPLEX_8 * restrict pb;
GFC_COMPLEX_8 res;
const GFC_COMPLEX_8 * restrict pa;
const GFC_COMPLEX_8 * restrict pb;
GFC_COMPLEX_8 res;
index_type count;
index_type astride;
index_type bstride;
index_type count;
index_type astride;
index_type bstride;
- COMPLEX_ASSIGN(conjga, REALPART (*pa), -IMAGPART (*pa));
- res += conjga * *pb;
+ res += __builtin_conj (*pa) * *pb;
pa += astride;
pb += bstride;
}
pa += astride;
pb += bstride;
}
#include <assert.h>
#include "libgfortran.h"'
include(iparm.m4)dnl
#include <assert.h>
#include "libgfortran.h"'
include(iparm.m4)dnl
`#if defined (HAVE_'rtype_name`)'
`#if defined (HAVE_'rtype_name`)'
const rtype_name * restrict pa;
const rtype_name * restrict pb;
rtype_name res;
const rtype_name * restrict pa;
const rtype_name * restrict pb;
rtype_name res;
index_type count;
index_type astride;
index_type bstride;
index_type count;
index_type astride;
index_type bstride;
- COMPLEX_ASSIGN(conjga, REALPART (*pa), -IMAGPART (*pa));
- res += conjga * *pb;
+ res += __builtin_conj`'q (*pa) * *pb;
pa += astride;
pb += bstride;
}
pa += astride;
pb += bstride;
}