[PATCH] D101608: [WebAssembly] Support for WebAssembly globals in LLVM IR

Sam Clegg via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed May 5 08:49:46 PDT 2021


sbc100 added a comment.

Does this mean that the magic `__stack_pointer` global can be referenced at the IR level?   I wonder if there are some hacks around handling of `__stack_pointer` that could be removed after this lands?



================
Comment at: llvm/lib/Target/WebAssembly/Utils/WebAssemblyUtilities.h:40
+  // appropriate.
+  WASM_ADDRESS_SPACE_OBJECT = 1
+};
----------------
What does "object" mean here?   Are we just talking about reference types?  Or also wasm globals that hold integers (like `__stack_pointer`).   If its just ref types that live in this address space should this be called `WASM_ADDRESS_SPACE_ANYREF`?   If its the latter should this be called `WASM_ADDRESS_SPACE_WASM_GLOBAL`?    


================
Comment at: llvm/lib/Target/WebAssembly/WebAssemblyISD.def:48
+
+// Reference Types
+HANDLE_MEM_NODETYPE(GLOBAL_GET)
----------------
Is this just for ref types or also for global that hold integers too (like `__stack_pointer`)


================
Comment at: llvm/test/CodeGen/WebAssembly/global-get.ll:13
+; CHECK-NEXT: end_function
+  %v = load i32, i32 addrspace(1)* @i32_global
+  ret i32 %v
----------------
I don't suppose there is any way to give `addrspace(1)` a symbolic name is there?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D101608/new/

https://reviews.llvm.org/D101608



More information about the cfe-commits mailing list