diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 657b101fdc4f2bbe36d0c97f7667cb1d8acc226a..958ede061965c181d2ccb8dba37b85bc8c2a45f5 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2007-12-09  H.J. Lu  <hjl@lucon.org>
+	    Tobias Burnus  <burnus@net-b.de>
+
+	PR fortran/34404
+	* gfortran.dg/read_2.f90: New.
+
 2007-12-09  Richard Sandiford  <rsandifo@nildram.co.uk>
 
 	* lib/target-supports.exp (check_effective_target_tls_native):
diff --git a/gcc/testsuite/gfortran.dg/read_2.f90 b/gcc/testsuite/gfortran.dg/read_2.f90
new file mode 100644
index 0000000000000000000000000000000000000000..d12dcef71ebb4296a2992a8c4689b8e110cfca8d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/read_2.f90
@@ -0,0 +1,12 @@
+! { dg-do run }
+!
+! PR fortran/34404
+!
+! Contributed by Joost VandeVondele.
+!
+implicit none
+complex :: x
+character(len=80) :: t="(1.0E-7,4.0E-3)"
+read(t,*) x
+if (real(x) /= 1.0e-7 .or. aimag(x)/=4.0e-3) call abort()
+END
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 888633823a94d35371076daed4333e1a1885961e..f80da8dc0d8b745c1e8fc832ed8afca8adb60739 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,8 @@
+2007-12-09  Tobias Burnus  <burnus@net-b.de>
+
+	PR fortran/34404
+	* io/list_read.c (parse_real): Remove superfluous "goto bad;".
+
 2007-12-08  Tobias Burnus  <burnus@net-b.de>
 
 	PR fortran/34319
diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c
index c212489153269a80e71fbe35e4bae49b708f554a..9ac5609e9ce23991a4b3effdc0aa343a92d3b2b5 100644
--- a/libgfortran/io/list_read.c
+++ b/libgfortran/io/list_read.c
@@ -1148,7 +1148,6 @@ parse_real (st_parameter_dt *dtp, void *buffer, int length)
 	goto bad;
     }
 
-    goto bad;
   push_char (dtp, c);
 
   for (;;)