diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2bd3883b0a01eb4b3e46f1e2c26a51dc582ce2d4..ba306b82ebe0e7f2448c583fda01198c1bdac133 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2004-01-28  Jan Hubicka  <jh@suse.cz>
+
+	* semantics.c (expand_body)  Do emit_associated_thunks before
+	expansion.
+
 2004-01-27  Devang Patel  <dpatel@apple.com>
 
 	* name-lookup.c: Include "debug.h"
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index deb5b820ed4a317d06494a1a814f69a4e422daa3..4af197be85f7ff67351b91ad56c1dd8f6c6550a7 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -2885,6 +2885,9 @@ expand_body (tree fn)
   /* ??? When is this needed?  */
   saved_function = current_function_decl;
 
+  /* Emit any thunks that should be emitted at the same time as FN.  */
+  emit_associated_thunks (fn);
+
   timevar_push (TV_INTEGRATION);
   optimize_function (fn);
   timevar_pop (TV_INTEGRATION);
@@ -2895,9 +2898,6 @@ expand_body (tree fn)
 
   extract_interface_info ();
 
-  /* Emit any thunks that should be emitted at the same time as FN.  */
-  emit_associated_thunks (fn);
-
   /* If this function is marked with the constructor attribute, add it
      to the list of functions to be called along with constructors
      from static duration objects.  */