diff --git a/ghc/compiler/main/MkIface.lhs b/ghc/compiler/main/MkIface.lhs
index ea3f81ce13c1aa4f4fcd73d793e814790191b891..af158b49a69b73fd05fd9f2170a7d9235a8089d9 100644
--- a/ghc/compiler/main/MkIface.lhs
+++ b/ghc/compiler/main/MkIface.lhs
@@ -305,8 +305,11 @@ ifaceId get_idinfo needed_ids is_rec id rhs
 		| otherwise      = ppr work_id <+> 
 				   braces (hsep (map ppr con_list))
 
-    (Just work_id) = work_info
-    wrapper_cons   = snd $ getWorkerIdAndCons id rhs
+--    (Just work_id) = work_info
+-- Temporary fix.  We can't use the worker id saved by the w/w
+-- pass because later optimisations may have changed it.  So try
+-- to snaffle from the wrapper code again ...
+    (work_id, wrapper_cons)   = getWorkerIdAndCons id rhs
     con_list       = uniqSetToList wrapper_cons
 
     ------------  Unfolding  --------------