blob: 86cd46dc15494bf7d588952aebd871eefe7f59bc [file] [log] [blame]
# 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