git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
C++: fix issue with thunk inlining
f14293cAndy Arvanitis
src/Language/PureScript/CodeGen/Cpp/Optimizer/Inliner.hs+4−1
@@ -73,7 +73,10 @@ unThunk = everywhereOnCpp convert
73 convert (CppBlock []) = CppBlock []
73 convert (CppBlock []) = CppBlock []
74 convert (CppBlock cpps) =
74 convert (CppBlock cpps) =
75 case last cpps of
75 case last cpps of
76− CppReturn (CppApp (CppLambda _ [] _ (CppBlock body)) []) -> CppBlock $ init cpps ++ body
76+ CppReturn (CppApp (CppLambda _ [] _ (CppBlock body)) []) ->
77+ case last body of
78+ CppReturn _ -> CppBlock $ init cpps ++ [CppIfElse (CppBooleanLiteral True) (CppBlock body) Nothing]
79+ _ -> CppBlock cpps
77 _ -> CppBlock cpps
80 _ -> CppBlock cpps
78 convert cpp = cpp
81 convert cpp = cpp
79
82