diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e21a4e217727aa5421e5b9095ac73d91bceca394..08f34e5c24f3333598bb27b162d51aecc3899d16 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2009-10-16  Richard Guenther  <rguenther@suse.de>
+
+	PR lto/41598
+	* gcc.dg/lto/20091016-1_0.c: New testcase.
+	* gcc.dg/lto/20091016-1_1.c: Likewise.
+	* gcc.dg/lto/20091016-1_a.h: Likewise.
+
 2009-10-16  Richard Guenther  <rguenther@suse.de>
 
 	PR lto/41715
diff --git a/gcc/testsuite/gcc.dg/lto/20091016-1_0.c b/gcc/testsuite/gcc.dg/lto/20091016-1_0.c
new file mode 100644
index 0000000000000000000000000000000000000000..942c5c6c0a4104602a19dd84fed07fcdd65bc4a9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091016-1_0.c
@@ -0,0 +1,13 @@
+/* { dg-lto-do link } */
+/* { dg-lto-options {{-fPIC -shared -O2 -flto}} } */
+
+typedef struct VEC_constructor_elt_gc { } VEC_constructor_elt_gc;
+#include "20091016-1_a.h"
+struct stmt_tree_s {
+    tree x_cur_stmt_list;
+};
+void *add_stmt (struct stmt_tree_s *x)
+{
+  return &x->x_cur_stmt_list;
+}
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091016-1_1.c b/gcc/testsuite/gcc.dg/lto/20091016-1_1.c
new file mode 100644
index 0000000000000000000000000000000000000000..06389b8e3097f93b327bb51ba00ed5225ab60b42
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091016-1_1.c
@@ -0,0 +1,18 @@
+typedef struct VEC_constructor_elt_gcx { } VEC_constructor_elt_gc;
+#include "20091016-1_a.h"
+struct gcc_target {
+    void (* builtin_vec_perm) (tree*);
+};
+extern struct gcc_target targetm;
+void dwarf2out_begin_prologue (tree t)
+{
+    (*targetm.builtin_vec_perm) (&t);
+}
+struct die_arg_entry_struct {
+    tree arg;
+};
+void *gt_pch_p_20VEC_die_arg_entry_gc (struct die_arg_entry_struct *vec)
+{
+    return &(vec->arg);
+}
+
diff --git a/gcc/testsuite/gcc.dg/lto/20091016-1_a.h b/gcc/testsuite/gcc.dg/lto/20091016-1_a.h
new file mode 100644
index 0000000000000000000000000000000000000000..8eefed5cfadcb8ef0b0099d4dba34c11ff7d699b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/lto/20091016-1_a.h
@@ -0,0 +1,6 @@
+typedef union tree_node *tree;
+union tree_node {
+    tree * use;
+    VEC_constructor_elt_gc *elts;
+};
+