X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=docs%2Fusers_guide%2Fglasgow_exts.xml;h=4f022395872fc81bc31e2e242cb73b22c68800f5;hp=f30b9f72019630090df29a92f40d5e1300f87100;hb=ba00f074b38f4e168c893adc293c5b9cd6992721;hpb=16f546834892cecd5b598ac7db2c86d60fabe233
diff --git a/docs/users_guide/glasgow_exts.xml b/docs/users_guide/glasgow_exts.xml
index f30b9f7..4f02239 100644
--- a/docs/users_guide/glasgow_exts.xml
+++ b/docs/users_guide/glasgow_exts.xml
@@ -5858,8 +5858,26 @@ key_function :: Int -> String -> (Bool, Double)
The major effect of an INLINE pragma
is to declare a function's “cost” to be very low.
The normal unfolding machinery will then be very keen to
- inline it.
-
+ inline it. However, an INLINE pragma for a
+ function "f" has a number of other effects:
+
+
+No funtions are inlined into f. Otherwise
+GHC might inline a big function into f's right hand side,
+making f big; and then inline f blindly.
+
+
+The float-in, float-out, and common-sub-expression transformations are not
+applied to the body of f.
+
+
+An INLINE function is not worker/wrappered by strictness analysis.
+It's going to be inlined wholesale instead.
+
+
+All of these effects are aimed at ensuring that what gets inlined is
+exactly what you asked for, no more and no less.
+
Syntactically, an INLINE pragma for a
function can be put anywhere its type signature could be
put.