diff --git a/compiler/GHC/Core/Unfold.hs b/compiler/GHC/Core/Unfold.hs index 4792545df7007b5809be2d56464c88f5168cef49..c53af7438044a60531ebc5a93e9c1ee18ff2cac0 100644 --- a/compiler/GHC/Core/Unfold.hs +++ b/compiler/GHC/Core/Unfold.hs @@ -16,6 +16,7 @@ find, unsurprisingly, a Core expression. -} {-# LANGUAGE CPP #-} +{-# LANGUAGE BangPatterns #-} {-# OPTIONS_GHC -Wno-incomplete-record-updates #-} @@ -614,7 +615,9 @@ sizeExpr :: DynFlags -- Note [Computing the size of an expression] -sizeExpr dflags bOMB_OUT_SIZE top_args expr +-- Forcing bOMB_OUT_SIZE early prevents repeated +-- unboxing of the Int argument. +sizeExpr dflags !bOMB_OUT_SIZE top_args expr = size_up expr where size_up (Cast e _) = size_up e