Fix longstanding bug in C-- inlining for functions calls.
authorEdward Z. Yang <ezyang@mit.edu>
Thu, 13 Jan 2011 13:06:54 +0000 (13:06 +0000)
committerEdward Z. Yang <ezyang@mit.edu>
Thu, 13 Jan 2011 13:06:54 +0000 (13:06 +0000)
compiler/cmm/CmmOpt.hs

index 2dced6a..fa25e24 100644 (file)
@@ -153,7 +153,7 @@ inlineStmt u a (CmmAssign r e) = CmmAssign r (inlineExpr u a e)
 inlineStmt u a (CmmStore e1 e2) = CmmStore (inlineExpr u a e1) (inlineExpr u a e2)
 inlineStmt u a (CmmCall target regs es srt ret)
    = CmmCall (infn target) regs es' srt ret
-   where infn (CmmCallee fn cconv) = CmmCallee fn cconv
+   where infn (CmmCallee fn cconv) = CmmCallee (inlineExpr u a fn) cconv
         infn (CmmPrim p) = CmmPrim p
         es' = [ (CmmHinted (inlineExpr u a e) hint) | (CmmHinted e hint) <- es ]
 inlineStmt u a (CmmCondBranch e d) = CmmCondBranch (inlineExpr u a e) d