| # Expected failures from running the assembled GCC torture tests. |
| |
| # Syntax: Each line has a single test to be marked as a 'known failure' (or |
| # 'exclusion'. Known failures are expected to fail, and will cause an error if |
| # they pass. (Known failures that do not run at all will not cause an |
| # error). The format is |
| # <name> <attributes> # comment |
| # where <name> matches the file name (no directory) passed to the test runner, |
| # and <attributes> is a comma-separated list of filter attributes. Each run of |
| # the test runner is said to have " a set of "attributes" that represent the |
| # configuration: e.g. which compiler, optimization level, JS engine etc is used |
| # for that run. A test will be excluded if the configuration has all of the |
| # attributes in the exclusion line. For example if a configuration has |
| # ['asm2wasm', 'O2', 'd8'] then the exclusion will apply if it has the |
| # attributes 'asm2wasm' or 'O2,d8' or no attributes, but not if it has 'bare' or |
| # 'asm2wasm,d8'. A test can be listed multiple times with different attribute |
| # sets, but not with the same (or a subset). |
| |
| # Files ending with .c.o.wasm are 'bare' tests run without emscripten; they |
| # come with the 'bare' attributes. The failures are mostly the same |
| # for those. These tests also are run with d8 and JSC ('d8' and 'jsc' attributes). |
| # |
| # Files with a .js extension are emscripten builds, which come in 'asm2wasm' or |
| # 'emwasm' (aka LLVM upstream wasm backend) attributes. |
| # |
| # Files with a .o.wasm extension are built using clang and lld native backends. |
| # |
| # Near-term TODO: Add different optimization levels, with their own attributes. |
| # A possible TODO: Allow wildcard matching to combine the corresponding bare and |
| # emscripten entry into a single line. This may not be worth it, as there isn't |
| # a huge amount of overlap. |
| |
| |
| ### Undefined behavior: native clang also fails |
| |
| |
| # Results of signed integer overflow are undefined in C, so don't care. |
| # 'clang -O2' runs -instcombine pass that does these transformations: |
| # > add nsw x, INT_MIN -> or x, INT_MIN |
| # > add nuw x, INT_MIN -> xor x, INT_MIN |
| # which makes the tests below fail. |
| 20040409-1.c.o.wasm O2 # abort() |
| 20040409-2.c.o.wasm O2 # abort() |
| 20040409-3.c.o.wasm O2 # abort() |
| |
| ### bare wasm.js tests: need some libc support. |
| # Not yet implemented. |
| # See wasm.js for the list of libc functions which are missing. |
| # The right place to put libc functionality would really be libc anyways. |
| 20101011-1.c.js # signal |
| builtin-bitops-1.c.js asm2wasm # __builtin_clrsb |
| pr47237.c.js # __builtin_apply_args |
| pr39228.c.js # __builtin_isinff/isinfl |
| |
| # Trying to import function 'bar'. The test is likely wrong. |
| va-arg-pack-1.c.js # No import error but missing __builtin_va_arg_pack |
| |
| # Additionally there are a bunch of unexpected failures when disabling IR |
| # optimization, which this margin is too small to contain. |
| # (a lot of them are unsupported features and missing libcalls which are |
| # eliminated by IR optzns) |
| |
| |
| # Don't care/won't fix: |
| eeprof-1.c.js # tests -finstrument-functions |
| pr23047.c.js O2,emwasm # tests -fwrapv |
| pr23047.c.js O3,emwasm # tests -fwrapv |
| |
| # Low priority |
| # Bitfield tests |
| bitfld-3.c.o.wasm |
| bitfld-3.c.js # abort() |
| bitfld-5.c.o.wasm |
| bitfld-5.c.js # memory access out of bounds |
| pr32244-1.c.o.wasm |
| pr32244-1.c.js # abort() |
| pr34971.c.o.wasm |
| pr34971.c.js # abort() |
| |
| # __builtin_return_address |
| # This is supported on wasm backend, but due to old v8 versions specifying |
| # offsets in a non-standard way, programs using __builtin_return_address |
| # require -s USE_OFFSET_CONVERTER Emscripten setting. |
| 20010122-1.c.js |
| pr17377.c.js |
| |
| ### Failures specific to emscripten |
| # no builtin frameaddress |
| frame-address.c.js asm2wasm |
| |
| # inline assembly tricks |
| 20030222-1.c.js asm2wasm |
| 20071220-2.c.js |
| pr38533.c.js asm2wasm |
| pr41239.c.js asm2wasm |
| pr49279.c.js asm2wasm |
| |
| # aborts in native clang |
| 20021127-1.c.o.wasm |
| 20021127-1.c.js emwasm |
| 20031003-1.c.o.wasm |
| 20031003-1.c.js # abort() in emwasm |
| |
| # hoisting of conditional cast causing wasm float->int conversion trap |
| # https://github.com/WebAssembly/binaryen/issues/983 |
| 20040831-1.c.js asm2wasm,O0 |
| |
| # This seems to be spuriously passing for now because the stack below it |
| # happens to align it to 32 byte alignment. Will probably need to toggle this |
| # in the future. |
| # alloca-1.c.js |
| |
| 20071018-1.c.js # missing __builtin_malloc |
| 20071120-1.c.js # missing __builtin_malloc |
| pr36765.c.js # missing __builtin_malloc |
| pr43008.c.js # missing __builtin_malloc |
| |
| |
| # SIMD |
| 20050316-2.c.js asm2wasm,O0 |
| 20050604-1.c.js asm2wasm |
| 20050607-1.c.js asm2wasm,O0 |
| 20060420-1.c.js asm2wasm |
| simd-1.c.js asm2wasm |
| simd-2.c.js asm2wasm |
| simd-4.c.js asm2wasm,O0 |
| simd-5.c.js asm2wasm |
| simd-6.c.js asm2wasm |
| pr53645-2.c.js asm2wasm |
| pr53645.c.js asm2wasm |
| pr60960.c.js asm2wasm # actually fails in asm2wasm, but JS file is still there |
| |
| # Untriaged emscripten O3 failures |
| 20040409-1.c.js O3 |
| 20040409-2.c.js O3 |
| 20040409-3.c.js O3 |
| 920612-1.c.js O3 |
| 920711-1.c.js O3 |
| 990208-1.c.js O3 |
| bcp-1.c.js asm2wasm,O3 |
| builtin-constant.c.js asm2wasm,O3 |
| fprintf-chk-1.c.js O3 |
| pr22493-1.c.js O3 |
| printf-chk-1.c.js O3 |
| vfprintf-chk-1.c.js O3 |
| vprintf-chk-1.c.js O3 |
| |
| |
| ### Failures for lld-linked binaries |
| |
| # printf or other libc feature missing |
| pr56982.c.o.wasm |
| pr39228.c.o.wasm |
| pr47237.c.o.wasm |
| |
| printf-chk-1.c.o.wasm O2 |
| vprintf-chk-1.c.o.wasm O2 |
| |
| # Don't care/won't fix: |
| 920612-1.c.o.wasm O2 # abort() # UB |
| 920711-1.c.o.wasm O2 # abort() # UB for 32-bit longs |
| pr22493-1.c.o.wasm O2 # abort() # UB |
| eeprof-1.c.o.wasm # tests -finstrument-functions |
| pr23047.c.o.wasm O2 # tests -fwrapv |
| |
| ### Failures specific to lld-linked binaries |
| |
| # Calls to user-defined-new is elided by clang (effects non-wasm too) |
| init__new41.C.o.wasm O2 |
| template__new11.C.o.wasm O2 |
| |
| # abort() |
| 20101011-1.c.o.wasm |
| 30101025-1.c.o.wasm |
| 3r39339.c.o.wasm |
| |
| fprintf-chk-1.c.o.wasm O2 |
| vfprintf-chk-1.c.o.wasm O2 |
| |
| # Missing _Unwind_* functions |
| cleanup-5.C.o.wasm |
| |
| # signature mismatches |
| tc1__dr20.C.o.wasm # printf |
| |
| # invalid main() signautre |
| 20091229-1.c.o.wasm |
| pr61375.c.o.wasm |
| switch-1.c.o.wasm |
| |
| # Untriaged lld failures |
| torture__pr48695.C.o.wasm O2 |
| |
| pr23135.c.o.wasm O0 |
| |
| abi__bitfield1.C.o.wasm |
| abi__vbase13.C.o.wasm |
| eh__alias1.C.o.wasm |
| eh__cond1.C.o.wasm |
| eh__cond4.C.o.wasm |
| eh__cond5.C.o.wasm |
| eh__cond6.C.o.wasm |
| eh__crossjump1.C.o.wasm |
| eh__ctor1.C.o.wasm |
| eh__ctor2.C.o.wasm |
| eh__defarg1.C.o.wasm |
| eh__delayslot1.C.o.wasm |
| eh__dtor1.C.o.wasm |
| eh__elide1.C.o.wasm |
| eh__elide2.C.o.wasm |
| eh__filter1.C.o.wasm |
| eh__filter2.C.o.wasm |
| eh__fp-regs.C.o.wasm |
| eh__ia64-2.C.o.wasm |
| eh__init-temp1.C.o.wasm |
| eh__loop1.C.o.wasm |
| eh__loop2.C.o.wasm |
| eh__new1.C.o.wasm |
| eh__omit-frame-pointer.C.o.wasm |
| eh__omit-frame-pointer2.C.o.wasm |
| eh__partial1.C.o.wasm |
| eh__pr29166.C.o.wasm |
| eh__registers1.C.o.wasm |
| eh__simd-1.C.o.wasm |
| eh__simd-2.C.o.wasm |
| eh__simd-3.C.o.wasm |
| eh__spbp.C.o.wasm |
| eh__spec10.C.o.wasm |
| eh__spec3.C.o.wasm |
| eh__spec7.C.o.wasm |
| eh__spec9.C.o.wasm |
| eh__synth2.C.o.wasm |
| eh__template1.C.o.wasm |
| eh__uncaught1.C.o.wasm |
| eh__uncaught4.C.o.wasm |
| eh__unexpected1.C.o.wasm |
| expr__cond12.C.o.wasm |
| expr__cond6.C.o.wasm |
| init__array12.C.o.wasm |
| init__array5.C.o.wasm |
| init__copy3.C.o.wasm |
| init__ctor1.C.o.wasm |
| init__new36.C.o.wasm |
| init__placement2.C.o.wasm |
| init__ref19.C.o.wasm |
| init__ref9.C.o.wasm |
| ipa__pr63838.C.o.wasm |
| opt__20050511-1.C.o.wasm |
| opt__const3.C.o.wasm |
| opt__eh2.C.o.wasm |
| opt__eh3.C.o.wasm |
| opt__eh4.C.o.wasm |
| opt__pr23299.C.o.wasm |
| opt__pr23478.C.o.wasm |
| other__copy2.C.o.wasm |
| rtti__dyncast3.C.o.wasm |
| rtti__typeid10.C.o.wasm |
| template__pretty1.C.o.wasm |
| torture__pr49115.C.o.wasm |
| torture__pr60750.C.o.wasm |
| torture__stackalign__eh-alloca-1.C.o.wasm |
| torture__stackalign__eh-global-1.C.o.wasm |
| torture__stackalign__eh-inline-1.C.o.wasm |
| torture__stackalign__eh-inline-2.C.o.wasm |
| torture__stackalign__eh-vararg-1.C.o.wasm |
| torture__stackalign__eh-vararg-2.C.o.wasm |
| torture__stackalign__throw-1.C.o.wasm |
| torture__stackalign__throw-2.C.o.wasm |
| torture__stackalign__throw-3.C.o.wasm |
| tree-ssa__pr33604.C.o.wasm |
| |
| ### Sanitizer tests |
| # Because we don't run sanitizers on them, they may succeed or fail, and we |
| # should not care about the results. For now we list tests that happen to fail. |
| ubsan__return-1.C.o.wasm |