diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 246cd5cbe1edb8a749aa323f884aa0942aa3c116..dd6567a15ea500b45b91d557751e92fdd780da0f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-08-15  Jakub Jelinek  <jakub@redhat.com>
+
+	PR middle-end/33074
+	* emit-rtl.c (try_split): Use INSN_LIST instead of EXPR_LIST for
+	REG_LIBCALL note.
+
 2007-08-14  Daniel Berlin  <dberlin@dberlin.org>
 
 	* tree-pass.h (PROP_pta): Removed.
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 745a10a851b5976322b7495c485a26ea6eb1cccf..6e7230db98c36d7136c08149d77adec6e917cecc 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -3274,7 +3274,7 @@ try_split (rtx pat, rtx trial, int last)
 	  /* Relink the insns with REG_LIBCALL note and with REG_RETVAL note 
 	     after split.  */
 	  REG_NOTES (insn_last) 
-	    = gen_rtx_EXPR_LIST (REG_LIBCALL,
+	    = gen_rtx_INSN_LIST (REG_LIBCALL,
 				 XEXP (note, 0),
 				 REG_NOTES (insn_last)); 
 
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 45fc15cd363deb09b09993146ae327c4cc6486e8..86abaddf632cef3d5e0b7da8864ccd5f04d54fed 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
 
+	PR middle-end/33074
+	* gfortran.dg/pr33074.f90: New test.
+
 	PR c++/32992
 	* g++.dg/opt/nrv14.C: New test.
 
diff --git a/gcc/testsuite/gfortran.dg/pr33074.f90 b/gcc/testsuite/gfortran.dg/pr33074.f90
new file mode 100644
index 0000000000000000000000000000000000000000..3538d6588c465d97dc557a7d0a22e6c64dfe9dff
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr33074.f90
@@ -0,0 +1,8 @@
+! PR middle-end/33074
+! { dg-do compile }
+! { dg-options "-O" }
+
+subroutine pr33074(a, w)
+  real a(1), w(1)
+  a(1) = 2.0**int(w(1))
+end