1 // Clear out the module cache entirely, so we start from nothing.
4 // Parse the file, such that building the module will cause Clang to crash.
5 // RUN: env CINDEXTEST_FAILONERROR=1 not c-index-test -test-load-source all -fmodules -fmodules-cache-path=%t -Xclang -fdisable-module-hash -I %S/Inputs/Headers -DCRASH %s > /dev/null 2> %t.err
6 // RUN: FileCheck < %t.err -check-prefix=CHECK-CRASH %s
7 // CHECK-CRASH: crash-recovery-modules.m:16:9:{16:2-16:14}: fatal error: could not build module 'Crash'
9 // Parse the file again, without crashing, to make sure that
10 // subsequent parses do the right thing.
11 // RUN: env CINDEXTEST_FAILONERROR=1 c-index-test -test-load-source all -fmodules -fmodules-cache-path=%t -Xclang -fdisable-module-hash -I %S/Inputs/Headers %s > /dev/null
13 // REQUIRES: crash-recovery
14 // UNSUPPORTED: libstdcxx-safe-mode, hwasan
19 #pragma clang __debug crash
23 const char* error = getCrashString();
28 // Check that libclang crash-recovery works; both with a module building crash...
29 // RUN: env CINDEXTEST_FAILONERROR=1 not c-index-test -test-load-source all -fmodules -fmodules-cache-path=%t -Xclang -fdisable-module-hash -I %S/Inputs/Headers -DCRASH -DLIBCLANG_CRASH %s > /dev/null 2> %t.err
30 // RUN: FileCheck < %t.err -check-prefix=CHECK-LIBCLANG-CRASH %s
31 // ...and with module building successful.
32 // RUN: env CINDEXTEST_FAILONERROR=1 not c-index-test -test-load-source all -fmodules -fmodules-cache-path=%t -Xclang -fdisable-module-hash -I %S/Inputs/Headers -DLIBCLANG_CRASH %s > /dev/null 2> %t.err
33 // RUN: FileCheck < %t.err -check-prefix=CHECK-LIBCLANG-CRASH %s
34 // CHECK-LIBCLANG-CRASH-DAG: libclang: crash detected during parsing
35 // CHECK-LIBCLANG-CRASH-DAG: Unable to load translation unit!