--- : info maybe_formals '{' body '}'
--- { do (info_lbl, info1, info2) <- $1;
--- formals <- sequence $2;
--- stmts <- getCgStmtsEC (loopDecls $4)
--- blks <- code (cgStmtsToBlocks stmts)
--- code (emitInfoTableAndCode info_lbl info1 info2 formals blks) }
---
--- | info maybe_formals ';'
--- { do (info_lbl, info1, info2) <- $1;
--- formals <- sequence $2;
--- code (emitInfoTableAndCode info_lbl info1 info2 formals []) }
-
- : NAME maybe_formals '{' body '}'
- { do formals <- sequence $2;
- stmts <- getCgStmtsEC (loopDecls $4);
- blks <- code (cgStmtsToBlocks stmts);
- code (emitProc CmmNonInfo (mkRtsCodeLabelFS $1) formals blks) }
-
-info :: { ExtFCode (CLabel, [CmmLit],[CmmLit]) }
+ : info maybe_formals '{' body '}'
+ { do ((info_lbl, info, live, formals), stmts) <-
+ getCgStmtsEC' $ loopDecls $ do {
+ (info_lbl, info, live) <- $1;
+ formals <- sequence $2;
+ $4;
+ return (info_lbl, info, live, formals) }
+ blks <- code (cgStmtsToBlocks stmts)
+ code (emitInfoTableAndCode info_lbl info formals blks) }
+
+ | info maybe_formals ';'
+ { do (info_lbl, info, live) <- $1;
+ formals <- sequence $2;
+ code (emitInfoTableAndCode info_lbl info formals []) }
+
+ | NAME maybe_formals '{' body '}'
+ { do (formals, stmts) <-
+ getCgStmtsEC' $ loopDecls $ do {
+ formals <- sequence $2;
+ $4;
+ return formals }
+ blks <- code (cgStmtsToBlocks stmts)
+ code (emitProc (CmmNonInfo Nothing) (mkRtsCodeLabelFS $1) formals blks) }
+
+info :: { ExtFCode (CLabel, CmmInfo, [Maybe LocalReg]) }