X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fparser%2FParser.y.pp;h=4552fe24b779be49d949f2c6a0489c470d75065b;hb=15a63009a30ce0d1614b36803185f548db838805;hp=6a34c2de8609fd06e5081ca9f3681ce5b7c425e9;hpb=82a7cebaea5dce16fc9658cc6a5ec037348075d1;p=ghc-hetmet.git diff --git a/compiler/parser/Parser.y.pp b/compiler/parser/Parser.y.pp index 6a34c2d..4552fe2 100644 --- a/compiler/parser/Parser.y.pp +++ b/compiler/parser/Parser.y.pp @@ -15,6 +15,14 @@ -- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings -- for details +{-# OPTIONS_GHC -O0 -fno-ignore-interface-pragmas #-} +{- +Careful optimisation of the parser: we don't want to throw everything +at it, because that takes too long and doesn't buy much, but we do want +to inline certain key external functions, so we instruct GHC not to +throw away inlinings as it would normally do in -O0 mode. +-} + module Parser ( parseModule, parseStmt, parseIdentifier, parseType, parseHeader ) where @@ -378,7 +386,7 @@ module :: { Located (HsModule RdrName) } Nothing)) } maybedocheader :: { (HaddockModInfo RdrName, Maybe (HsDoc RdrName)) } - : moduleheader { (fst $1, snd $1) } + : moduleheader { $1 } | {- empty -} { (emptyHaddockModInfo, Nothing) } missing_module_keyword :: { () } @@ -606,8 +614,8 @@ ty_decl :: { LTyClDecl RdrName } | data_or_newtype tycl_hdr constrs deriving {% do { let {(ctxt, tc, tvs, tparms) = unLoc $2} ; checkTyVars tparms -- no type pattern - ; return $ - L (comb4 $1 $2 $3 $4) + ; return $! + sL (comb4 $1 $2 $3 $4) -- We need the location on tycl_hdr in case -- constrs and deriving are both empty (mkTyData (unLoc $1) (ctxt, tc, tvs, Nothing) @@ -619,8 +627,8 @@ ty_decl :: { LTyClDecl RdrName } deriving {% do { let {(ctxt, tc, tvs, tparms) = unLoc $2} ; checkTyVars tparms -- can have type pats - ; return $ - L (comb4 $1 $2 $4 $5) + ; return $! + sL (comb4 $1 $2 $4 $5) (mkTyData (unLoc $1) (ctxt, tc, tvs, Nothing) (unLoc $3) (reverse (unLoc $5)) (unLoc $6)) } }