pavelsavara wrote:

I don't know who needs to hear this, but I got bitten by `wasm-opt` being on my 
PATH (while using WASI SDK 22).

I was trying to compile zlib-ng for WASIp2 and it's CMake platform detection 
was passing `-O3` to `check_type_size("void *" SIZEOF_DATA_PTR)`
It worked on some machines and it broke on others. Those which had `wasm-opt` 
on PATH.

Because in `WASIp2` the LLVM produces WASM component not WASM module. 
The wasm-opt doesn't know how to read the component binary and fails with 
`parse exception: surprising value (at 0:8)`

When that happens during CMake detetection, that problem is not surfaced and 
you are looking at
```
-- Check size of void *
-- sizeof(void *) is  bytes
  CMake Error at C:/Dev/runtime/src/native/external/zlib-ng/CMakeLists.txt:485 
(message):
    sizeof(void *) is neither 32 nor 64 bit
```

Until now, I was naive user of CMake.

- Maybe the `--no-wasm-opt` should be the default for WASM components
    - because not doing so is not breaking change, I guess.
- Maybe the `--no-wasm-opt` should be the default everywhere
- Maybe LLVM should check wasm-opt version or compatibility first ?
- Maybe `wasm-component-ld` should pass the module to wasm-opt before it makes 
component out of it ?
- Or maybe wasm-opt needs to learn how to unpack component, optimize the 
modules and pack it back ?
    - if wasm-opt is expected on components too

Should I open new issue for this ? Which of it and where ?

https://github.com/llvm/llvm-project/pull/95208
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to