2008-04-15 Jakub Jelinek PR target/35662 * f95-lang.c (gfc_init_builtin_functions): Make sure BUILT_IN_SINCOS{,F,L} types aren't varargs. * gfortran.dg/pr35662.f90: New test. --- gcc/fortran/f95-lang.c.jj 2008-02-29 09:11:54.000000000 +0100 +++ gcc/fortran/f95-lang.c 2008-04-15 13:17:50.000000000 +0200 @@ -1,5 +1,5 @@ /* gfortran backend interface - Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Contributed by Paul Brook. @@ -853,21 +853,21 @@ gfc_init_builtin_functions (void) ptype = build_pointer_type (float_type_node); tmp = tree_cons (NULL_TREE, float_type_node, tree_cons (NULL_TREE, ptype, - build_tree_list (NULL_TREE, ptype))); + tree_cons (NULL_TREE, ptype, void_list_node))); func_float_floatp_floatp = build_function_type (void_type_node, tmp); ptype = build_pointer_type (double_type_node); tmp = tree_cons (NULL_TREE, double_type_node, tree_cons (NULL_TREE, ptype, - build_tree_list (NULL_TREE, ptype))); + tree_cons (NULL_TREE, ptype, void_list_node))); func_double_doublep_doublep = build_function_type (void_type_node, tmp); ptype = build_pointer_type (long_double_type_node); tmp = tree_cons (NULL_TREE, long_double_type_node, tree_cons (NULL_TREE, ptype, - build_tree_list (NULL_TREE, ptype))); + tree_cons (NULL_TREE, ptype, void_list_node))); func_longdouble_longdoublep_longdoublep = build_function_type (void_type_node, tmp); --- gcc/testsuite/gfortran.dg/pr35662.f90.jj 2008-04-15 13:44:17.000000000 +0200 +++ gcc/testsuite/gfortran.dg/pr35662.f90 2008-04-15 13:44:09.000000000 +0200 @@ -0,0 +1,20 @@ +! PR target/35662 +! { dg-do run } +! { dg-options "-O1" } + +subroutine f(x, y, z) + real, intent (in) :: x + real, intent (out) :: y, z + y = sin (x) + z = cos (x) +end subroutine f + +program pr35662 + real :: x, y, z + x = 3.1415926535897932384626433832795029 + call f (x, y, z) + if (abs (y) > 1.0e-5 .or. abs (z + 1.0) > 1.0e-5) call abort + x = x / 2.0 + call f (x, y, z) + if (abs (y - 1.0) > 1.0e-5 .or. abs (z) > 1.0e-5) call abort +end program pr35662