# Tests which are known to fail from the GCC torture test suite.

# 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

# blockaddress without an indirectbr still can't be supported
20071220-1.c O2 # Relocation against a BB address
20071220-2.c
990208-1.c
label13.C O0
label13a.C O0
label3.C

# WebAssembly hasn't implemented (will never?) __builtin_return_address
20010122-1.c
20030323-1.c
20030811-1.c
pr17377.c

# Error: invalid output constraint '=t' in asm.
990413-2.c

# Error: __builtin_setjmp / __builtin_longjmp is not supported for the current target.
built-in-setjmp.c
pr60003.c

# Error in the program / unsupported by Clang.
20000822-1.c
20010209-1.c
20010605-1.c
20030501-1.c
20040520-1.c
20061220-1.c
20090219-1.c
920415-1.c
920428-2.c
920501-7.c
920612-2.c
920721-4.c
921017-1.c
921215-1.c
931002-1.c
comp-goto-2.c
nest-align-1.c
nest-stdar-1.c
nestfunc-1.c
nestfunc-2.c
nestfunc-3.c
nestfunc-5.c
nestfunc-6.c
nestfunc-7.c
pr22061-3.c
pr22061-4.c
pr24135.c
pr51447.c
20020412-1.c
20040308-1.c
20040423-1.c
20041218-2.c
20070919-1.c
align-nest.c
pr41935.c
920302-1.c
920501-3.c
920728-1.c
pr28865.c
attr-alias-1.C
attr-alias-2.C
attr-ifunc-1.C
attr-ifunc-2.C
attr-ifunc-3.C
attr-ifunc-4.C
complit12.C
va-arg-pack-1.C
va-arg-pack-len-1.C
builtin-line1.C
devirt-6.C  # bad main signature
devirt-13.C  # bad main signature
devirt-14.C  # bad main signature
devirt-21.C  # bad main signature
devirt-23.C  # bad main signature
lifetime2.C  # violates C++ DR1696

# WASI doesn't have stdjmp.h yet
pr56982.c
simd-2.C

# WASI doesn't have pthread.h yet
thread_local3.C
thread_local3g.C
thread_local4.C
thread_local4g.C
thread_local5.C
thread_local5g.C

# Untriaged C++ failures
spec5.C
addr1.C
ef_test.C
member2.C
new39.C
new40.C
nrv8.C
offsetof9.C
opaque-1.C
pr19650.C
pr37146-1.C
pr46149.C
pr59470.C
rtti2.C
self1.C
type-generic-1.C
vbase8-10.C
vbase8-21.C
vbase8-22.C
vbase8-4.C
vector1.C
