QuantumSegfault wrote:
> Can you elaborate on this? e.g., how would we declare a table of externrefs
> and an array of externrefs?
Consider:
```c
#define WASM_GLOBAL __attribute__((address_space(1)))
#ifdef __cplusplus
extern "C" {
#endif
int i32_data;
WASM_GLOBAL int i32_global;
double f64_data;
WASM_GLOBAL double f64_global;
#ifdef __cplusplus
}
#endif
```
```ll
@i32_data = hidden global i32 0, align 4
@i32_global = hidden addrspace(1) global i32 0, align 4
@f64_data = hidden global double 0.000000e+00, align 8
@f64_global = hidden addrspace(1) global double 0.000000e+00, align 8
```
So externref table vs global array would be something like
```
WASM_GLOBAL static __externref_t externref_table[0];
__externref_t externref_array[];
```
Whether `WASM_GLOBAL` actually remains `__attribute__((address_space(1)))`, or
if you design a new attribute (e.g. `wasmvar`), the concept applies.
https://github.com/llvm/llvm-project/pull/205817
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits