Use OPTIONS rather than OPTIONS_GHC for pragmas
[ghc-hetmet.git] / compiler / cmm / CmmProcPoint.hs
index 36c02ff..9c8dda8 100644 (file)
@@ -1,3 +1,10 @@
+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+--     http://hackage.haskell.org/trac/ghc/wiki/CodingStyle#Warnings
+-- for details
+
 module CmmProcPoint (
   calculateProcPoints
   ) where
@@ -79,8 +86,12 @@ calculateNewProcPoints  owners block =
           where
             parent_owners = lookupWithDefaultUFM owners emptyUniqSet parent_id
             child_owners = lookupWithDefaultUFM owners emptyUniqSet child_id
-            needs_proc_point = not $ isEmptyUniqSet $
-                               child_owners `minusUniqSet` parent_owners
+            needs_proc_point =
+                -- only if parent isn't dead
+                (not $ isEmptyUniqSet parent_owners) &&
+                -- and only if child has more owners than parent
+                (not $ isEmptyUniqSet $
+                     child_owners `minusUniqSet` parent_owners)
 
 calculateOwnership :: BlockEnv BrokenBlock
                    -> UniqSet BlockId
@@ -113,4 +124,4 @@ calculateOwnership blocks_ufm proc_points blocks =
                   new = old `unionUniqSets`
                         lookupWithDefaultUFM owners emptyUniqSet cause'
 
-      unknown_block = panic "unknown BlockId in selectStackFormat"
+      unknown_block = panic "unknown BlockId in calculateOwnership"