| void foo(); |
| void dwarf_with_exceptions() { |
| try { |
| foo(); |
| } catch (...) { |
| foo(); |
| } |
| } |
| // How to generate dwarf_with_exceptions.wasm: |
| // $ clang++ -std=c++14 --target=wasm32-unknown-unknown -g -fwasm-exceptions \ |
| // -Xclang -disable-O0-optnone -c -S -emit-llvm |
| // dwarf_with_exceptions.cpp -o temp.ll |
| // $ opt -S -mem2reg -simplifycfg temp.ll -o dwarf_with_exceptions.ll |
| // Remove some personal info from dwarf_with_exceptions.ll |
| // $ llc -exception-model=wasm -mattr=+exception-handling -filetype=obj \ |
| // dwarf_with_exceptions.ll -o dwarf_with_exceptions.o |
| // $ wasm-ld --no-entry --no-gc-sections --allow-undefined \ |
| // dwarf_with_exceptions.o -o dwarf_with_exceptions.wasm |