================

----------------
QuantumSegfault wrote:

Any shortcomings with `__indirect_function_table` are unrelated.

This is/was simply a mismatch between how table symbols (from IR globals) are 
emitted, vs how they are parsed from `.s`. When emitted, nothing ever specifies 
32 vs 64 bit, and it defaults to 32 bit (except for the special handling of 
`__indirect_function_table`, where it has been explicitly marked).

So tables are always emitted 32-bit (default). And this is reflected in direct 
object emission. Never is `IS_64` flag set by `llc` when creating Wasm tables 
from IR globals.

However when AsmParser sees a table declaration, it decides that on Wasm64 the 
default is to treat as a 64-bit table (setting the appropriate flag on the 
MCSymbol). So if one does `llc` => `.s` => `llvm-mc` => `.wasm/.o`, it kind of 
works already (which actually breaks other assumptions that instructions 
make...) and treats all tables as 64-bit.

https://github.com/llvm/llvm-project/pull/180649
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to