66 lines
2.2 KiB
Diff
66 lines
2.2 KiB
Diff
2008-04-15 Jakub Jelinek <jakub@redhat.com>
|
|
|
|
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
|