This shows up as failures of gfortran.dg/bessel_[67].f90 on ptx. According to the man page, the correct declarations are

double jn(int n, double x);
double yn(int n, double x);

and our calls match this, but the argument types are switched in the decls built by the Fortran frontend. On ptx, such errors are diagnosed by the assembler. Fixed by the following patch, bootstrapped and tested on x86_64-linux. Ok?

I'm also seeing some new Fortran testsuite failures after the recent merge to gomp-4_0-branch, due to a similar issue. That one has been harder to figure out, one of the affected tests is gfortran.dg/array_assignment_5.f90. Here, we call _gfortran_spread_char_scalar, which is declared in the library as a function taking 6 args, and we pass 6 args to it. However, the decl for it only has 5 arguments. It's unclear to me where the problem is in the construction of the argument list for the decl. I'm also unsure why this has shown up only very recently.


Bernd
commit 87c261fd190c9dea09a793b1295e7cff9bb6044e
Author: Bernd Schmidt <ber...@codesourcery.com>
Date:   Wed Sep 10 18:02:53 2014 +0200

    Fix type mismatches in intrinsic functions.
    
    	* f95-lang.c (build_builtin_fntypes): Switch order of args for type
    	with index 2.

diff --git a/gcc/fortran/f95-lang.c b/gcc/fortran/f95-lang.c
index da3a0d0..27cfc87 100644
--- a/gcc/fortran/f95-lang.c
+++ b/gcc/fortran/f95-lang.c
@@ -608,9 +608,9 @@ build_builtin_fntypes (tree *fntype, tree type)
   fntype[0] = build_function_type_list (type, type, NULL_TREE);
   /* type (*) (type, type) */
   fntype[1] = build_function_type_list (type, type, type, NULL_TREE);
-  /* type (*) (type, int) */
-  fntype[2] = build_function_type_list (type,
-                                        type, integer_type_node, NULL_TREE);
+  /* type (*) (int, type) */
+  fntype[2] = build_function_type_list (type, integer_type_node, type,
+                                        NULL_TREE);
   /* type (*) (void) */
   fntype[3] = build_function_type_list (type, NULL_TREE);
   /* type (*) (type, &int) */

Reply via email to