Комментарии 6
Подождите, а на каком emcc вы это запускали? Обычный clang 6 вполне нормально кушает вышеприведенный код. Т.к. clang основан на llvm, как и emscripten, то поведение должно быть одинаковым, не? https://godbolt.org/g/nEvZTH
0
Компилятор состоит из фронтенда clang и бакенда llvm. Бага может быть как во фронтенде, который генерирует llvm байткод, так и в бакенде который генерирует wasm. На тот момент llvm бакенда не было, поэтому не тестировали вариант с LLVM WebAssembly backend
0
У вас повторяется на последней версии с LLVM бекендом?
+1
С LLVM не тестировали, но я проверю. В основном мы залатали сами места. Сейчас же имеет смысл включить clamp. Про то как мы ловим такие ситуации, я писал в C++ креши в WebAssembly на разных браузерах.
0
Каков результат?)
+1
Спасибо, что напомнили. Обновил 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 приложение для «поиграться».
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Опыт с WebAssembly или как С++ undefined behavior выстрелил в ногу