Wasm Support

Well, if all wasm code is eventually linked into one object file for deployment, then there shouldn't ever strictly be a need for a GOT (though Swift or LLVM may end up incidentally generating entries because it assumes a symbol might come from a dynamic library in many cases). You might be able to fend off these unnecessary GOT entries in the short term by marking all symbols as dsolocal in the generated LLVM IR, and changing the logic in Swift IRGen's getAddrOfLLVMVariableOrGOTEquivalent to always generate direct references when targeting WASM.

If WASM in the future does end up having a dynamic linking story, then we would still probably want to keep the places where we use RelativeIndirectablePointer as true-const to minimize startup time, but maybe we can avoid solving that problem until the future. A future WASM with dynamic linking support might end up growing full support for PIC too, you never know.

To me, it seems more natural to change the LLVM calling convention lowering for swiftcc functions.