PR tree-opt/22035
* gfortran.dg/f2c_6.f90: New test.
From-SVN: r101152
+2005-06-18 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
+
+ PR tree-opt/22035
+ * gfortran.dg/f2c_6.f90: New test.
+
2005-06-17 Geoffrey Keating <geoffk@apple.com>
PR c++/17413
--- /dev/null
+! { dg-do run }
+! { dg-options "-ff2c" }
+! Verifies that complex pointer results work with -ff2c
+! try all permutations of result clause in function yes/no
+! and result clause in interface yes/no
+! this is not possible in Fortran 77, but this exercises a previously
+! buggy codepath
+function c() result (r)
+ common // z
+ complex, pointer :: r
+ complex, target :: z
+
+ r=>z
+end function c
+
+function d()
+ common // z
+ complex, pointer :: d
+ complex, target :: z
+
+ d=>z
+end function d
+
+function e()
+ common // z
+ complex, pointer :: e
+ complex, target :: z
+
+ e=>z
+end function e
+
+function f() result(r)
+ common // z
+ complex, pointer :: r
+ complex, target :: z
+
+ r=>z
+end function f
+
+interface
+ function c
+ complex, pointer :: c
+ end function c
+end interface
+interface
+ function d
+ complex, pointer :: d
+ end function d
+end interface
+interface
+ function e result(r)
+ complex, pointer :: r
+ end function e
+end interface
+interface
+ function f result(r)
+ complex, pointer :: r
+ end function f
+end interface
+
+common // z
+complex, target :: z
+complex, pointer :: p
+
+z = (1.,0.)
+p => c()
+z = (2.,0.)
+if (p /= z) call abort ()
+
+NULLIFY(p)
+p => d()
+z = (3.,0.)
+if (p /= z) call abort ()
+
+NULLIFY(p)
+p => e()
+z = (4.,0.)
+if (p /= z) call abort ()
+
+NULLIFY(p)
+p => f()
+z = (5.,0.)
+if (p /= z) call abort ()
+end