Add important missing case for bothCPR
authorSimon Peyton Jones <simonpj@microsoft.com>
Tue, 28 May 2013 08:03:12 +0000 (09:03 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Thu, 6 Jun 2013 13:29:55 +0000 (14:29 +0100)
If either side diverges, both do!

compiler/basicTypes/Demand.lhs

index a2d752a..3e8096a 100644 (file)
@@ -722,7 +722,8 @@ lubCPR _ _                     = NoCPR
 
 bothCPR :: CPRResult -> CPRResult -> CPRResult
 -- See Note [Asymmetry of 'both' for DmdType and DmdResult]
-bothCPR r _ = r
+bothCPR _ BotCPR = BotCPR   -- If either diverges, we diverge
+bothCPR r _      = r
 
 instance Outputable DmdResult where
   ppr RetProd    = char 'm'