summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2012-09-06 07:03:42 +0000
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2012-09-06 07:03:42 +0000
commit19bbb6e7d8067c79a88ee164d097d03764776012 (patch)
tree87ac2bee1b2f37f96da086a564cd75c146efa19d /gcc
parent1acddee6b765baa91ae1c284a4b07aff659801cb (diff)
downloadppe42-gcc-19bbb6e7d8067c79a88ee164d097d03764776012.tar.gz
ppe42-gcc-19bbb6e7d8067c79a88ee164d097d03764776012.zip
2012-09-06 Tobias Burnus
PR fortran/54463 * trans-intrinsic.c (gfc_conv_intrinsic_funcall): Fix matmul call to BLAS if the default-kind has been promoted. 2012-09-06 Tobias Burnus PR fortran/54463 * gfortran.dg/promotion_2.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@191012 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-intrinsic.c7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/promotion_2.f9016
4 files changed, 30 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 69c0fe8e5e6..9b616c2af3a 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2012-09-06 Tobias Burnus
+
+ PR fortran/54463
+ * trans-intrinsic.c (gfc_conv_intrinsic_funcall): Fix matmul
+ call to BLAS if the default-kind has been promoted.
+
2012-09-05 Tobias Burnus <burnus@net-b.de>
PR fortran/54462
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index add4baaa311..4b268b34ba7 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -2362,21 +2362,20 @@ gfc_conv_intrinsic_funcall (gfc_se * se, gfc_expr * expr)
if (gfc_option.flag_external_blas
&& (sym->ts.type == BT_REAL || sym->ts.type == BT_COMPLEX)
- && (sym->ts.kind == gfc_default_real_kind
- || sym->ts.kind == gfc_default_double_kind))
+ && (sym->ts.kind == 4 || sym->ts.kind == 8))
{
tree gemm_fndecl;
if (sym->ts.type == BT_REAL)
{
- if (sym->ts.kind == gfc_default_real_kind)
+ if (sym->ts.kind == 4)
gemm_fndecl = gfor_fndecl_sgemm;
else
gemm_fndecl = gfor_fndecl_dgemm;
}
else
{
- if (sym->ts.kind == gfc_default_real_kind)
+ if (sym->ts.kind == 4)
gemm_fndecl = gfor_fndecl_cgemm;
else
gemm_fndecl = gfor_fndecl_zgemm;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c33fddce097..7089b59b1ef 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-09-06 Tobias Burnus
+
+ PR fortran/54463
+ * gfortran.dg/promotion_2.f90: New.
+
2012-09-05 Jakub Jelinek <jakub@redhat.com>
PR middle-end/54486
diff --git a/gcc/testsuite/gfortran.dg/promotion_2.f90 b/gcc/testsuite/gfortran.dg/promotion_2.f90
new file mode 100644
index 00000000000..3acf249705c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/promotion_2.f90
@@ -0,0 +1,16 @@
+! { dg-do compile }
+! { dg-options "-fdefault-real-8 -fexternal-blas -fdump-tree-original" }
+!
+! PR fortran/54463
+!
+! Contributed by Simon Reinhardt
+!
+program test
+ implicit none
+ real, dimension(3,3) :: A
+ A = matmul(A,A)
+end program test
+
+! { dg-final { scan-tree-dump-times "sgemm_" 0 "original" } }
+! { dg-final { scan-tree-dump-times "dgemm_" 1 "original" } }
+! { dg-final { cleanup-tree-dump "original" } }
OpenPOWER on IntegriCloud