diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f750a853c73b5b6db5985202536406edd81abd5a..49d0a96a395756f65697063e4e9ddeb59bfbf67f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2008-01-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/34618
+	* tree-outof-ssa.c (create_temp): Copy over DECL_GIMPLE_REG_P
+	flag from T.
+
 2008-01-05  Uros Bizjak  <ubizjak@gmail.com>
 
 	PR target/34673
diff --git a/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c
index fd22d327fe9c7380adff227e0e0625f84f880726..b2816a0ca337da20615e7d4f7254e432ca12059f 100644
--- a/gcc/tree-outof-ssa.c
+++ b/gcc/tree-outof-ssa.c
@@ -1,5 +1,5 @@
 /* Convert a program in SSA form into Normal form.
-   Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
    Contributed by Andrew Macleod <amacleod@redhat.com>
 
 This file is part of GCC.
@@ -119,6 +119,7 @@ create_temp (tree t)
     }
   DECL_ARTIFICIAL (tmp) = DECL_ARTIFICIAL (t);
   DECL_IGNORED_P (tmp) = DECL_IGNORED_P (t);
+  DECL_GIMPLE_REG_P (tmp) = DECL_GIMPLE_REG_P (t);
   add_referenced_var (tmp);
 
   /* add_referenced_var will create the annotation and set up some
diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog
index 1c7313a38e42dbee747ab49f71d3aec0887d926d..57f20a2344b854f2f66f5a9582bb378875a22ac0 100644
--- a/libmudflap/ChangeLog
+++ b/libmudflap/ChangeLog
@@ -1,3 +1,8 @@
+2008-01-05  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/34618
+	* testsuite/libmudflap.c/pass62-frag.c: New test.
+
 2008-01-03  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/34619
diff --git a/libmudflap/testsuite/libmudflap.c/pass62-frag.c b/libmudflap/testsuite/libmudflap.c/pass62-frag.c
new file mode 100644
index 0000000000000000000000000000000000000000..8e64b2b0e43cd146ff39d1e422adec237e2ce143
--- /dev/null
+++ b/libmudflap/testsuite/libmudflap.c/pass62-frag.c
@@ -0,0 +1,13 @@
+/* PR tree-optimization/34618 */
+/* { dg-do compile } */
+/* { dg-options "-O3 -fmudflap" } */
+
+int a[16];
+
+void
+foo ()
+{
+  int i;
+  for (i = 0; i < 16; i++)
+    a[i] = i;
+}