Remove a redundant test
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 4 Jan 2017 13:09:54 +0000 (13:09 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Thu, 5 Jan 2017 08:51:23 +0000 (08:51 +0000)
postInlineUnconditionally was testing for isExportedId, but it was
/also/ testing for top-level-ness, which is redundant.  This patch
just removes the redundant test, and documents it.

compiler/simplCore/SimplUtils.hs

index 03adfe0..5f60042 100644 (file)
@@ -1155,7 +1155,6 @@ postInlineUnconditionally dflags env top_lvl bndr occ_info rhs unfolding
   | not active                  = False
   | isWeakLoopBreaker occ_info  = False -- If it's a loop-breaker of any kind, don't inline
                                         -- because it might be referred to "earlier"
-  | isExportedId bndr           = False
   | isStableUnfolding unfolding = False -- Note [Stable unfoldings and postInlineUnconditionally]
   | isTopLevel top_lvl          = False -- Note [Top level and postInlineUnconditionally]
   | exprIsTrivial rhs           = True
@@ -1249,6 +1248,10 @@ ones that are trivial):
 
   * The inliner should inline trivial things at call sites anyway.
 
+  * The Id might be exported.  We could check for that separately,
+    but since we aren't going to postInlineUnconditinoally /any/
+    top-level bindings, we don't need to test.
+
 Note [Stable unfoldings and postInlineUnconditionally]
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Do not do postInlineUnconditionally if the Id has an stable unfolding,