Comments 6
Подождите, а на каком emcc вы это запускали? Обычный clang 6 вполне нормально кушает вышеприведенный код. Т.к. clang основан на llvm, как и emscripten, то поведение должно быть одинаковым, не? https://godbolt.org/g/nEvZTH
Компилятор состоит из фронтенда clang и бакенда llvm. Бага может быть как во фронтенде, который генерирует llvm байткод, так и в бакенде который генерирует wasm. На тот момент llvm бакенда не было, поэтому не тестировали вариант с LLVM WebAssembly backend
У вас повторяется на последней версии с LLVM бекендом?
С LLVM не тестировали, но я проверю. В основном мы залатали сами места. Сейчас же имеет смысл включить clamp. Про то как мы ловим такие ситуации, я писал в C++ креши в WebAssembly на разных браузерах.
Каков результат?)
Спасибо, что напомнили. Обновил emscripten с его новым бакендом, теперь код
Теперь код отрабатывает нормально. Сейчас ковыряю поддержку Wasm в Qt, если все получится, то будут готовое standalone приложение для «поиграться».
#include <cstdio>
#include <vector>
#include <chrono>
int main(int argc, char ** argv) {
double a = 100000000000.0;
printf("%d\n", int(a));
return 0;
}
Теперь код отрабатывает нормально. Сейчас ковыряю поддержку Wasm в Qt, если все получится, то будут готовое standalone приложение для «поиграться».
Sign up to leave a comment.
Опыт с WebAssembly или как С++ undefined behavior выстрелил в ногу