Forked from
Glasgow Haskell Compiler / GHC
1141 commits behind the upstream repository.

Cheng Shao
authored
This patch makes the STG->Cmm backend avoid saving foreign call target to local when there are no caller-save GlobalRegs. Since 321941a8, when we lower a foreign call, we unconditionally save the foreign call target to a temporary local first, then rely on cmmSink to clean it up later, which only happens with -fcmm-sink (implied by -O) and not in unoptimized code. And this is troublesome for the wasm backend NCG, which needs to infer a foreign call target symbol's type signature from the Cmm call site. Previously, the NCG has been emitting incorrect type signatures for unoptimized code, which happens to work with `wasm-ld` most of the time, but this is never future-proof against upstream toolchain updates, and it causes horrible breakages when LTO objects are included in linker input. Hence this patch.
Name | Last commit | Last update |
---|---|---|
.. | ||
Cmm | ||
Core | ||
CoreToStg | ||
HsToCore | ||
Stg | ||
Cmm.hs | ||
CmmToAsm.hs | ||
CmmToLlvm.hs | ||
CoreToStg.hs | ||
Diagnostic.hs | ||
Finder.hs | ||
HsToCore.hs | ||
Linker.hs | ||
Logger.hs | ||
Parser.hs | ||
StgToCmm.hs | ||
StgToJS.hs | ||
Tidy.hs |