--- gcc/cgraph.c.jj	2010-06-28 15:36:30.000000000 +0200
+++ gcc/cgraph.c	2010-06-29 18:05:36.000000000 +0200
@@ -2217,6 +2217,8 @@ cgraph_create_virtual_clone (struct cgra
      ??? We cannot use COMDAT linkage because there is no
      ABI support for this.  */
   DECL_EXTERNAL (new_node->decl) = 0;
+  if (DECL_ONE_ONLY (old_decl))
+    DECL_SECTION_NAME (new_node->decl) = NULL;
   DECL_COMDAT_GROUP (new_node->decl) = 0;
   TREE_PUBLIC (new_node->decl) = 0;
   DECL_COMDAT (new_node->decl) = 0;
--- gcc/testsuite/g++.dg/torture/pr43801.C.jj	2010-06-29 18:09:32.000000000 +0200
+++ gcc/testsuite/g++.dg/torture/pr43801.C	2010-06-29 18:10:34.000000000 +0200
@@ -0,0 +1,22 @@
+// PR tree-optimization/43801
+// { dg-do compile }
+// { dg-options "-fipa-cp -fipa-cp-clone" }
+
+struct A
+{
+  virtual void f (int);
+};
+struct B : virtual A
+{
+  virtual void f (int i) { if (i) A::f(0); }
+};
+struct C : virtual B
+{
+  virtual void f (int) { B::f(0); }
+};
+
+void
+foo ()
+{
+  C ();
+}
