xref: /llvm-project/clang/test/Driver/crash-report.cpp (revision 011b4d4706eea722d63438892afefdb8152b7b62)
1*011b4d47SKirill Stoimenov // RUN: export LSAN_OPTIONS=detect_leaks=0
28dfbe9b0SNico Weber // RUN: rm -rf %t
38dfbe9b0SNico Weber // RUN: mkdir %t
48dfbe9b0SNico Weber 
58dfbe9b0SNico Weber // RUN: echo '-fsyntax-only                                              \
68dfbe9b0SNico Weber // RUN:  -F/tmp/ -I /tmp/ -idirafter /tmp/ -iquote /tmp/ -isystem /tmp/  \
78dfbe9b0SNico Weber // RUN:  -iprefix /the/prefix -iwithprefix /tmp -iwithprefixbefore /tmp/ \
88dfbe9b0SNico Weber // RUN:  -Xclang -internal-isystem -Xclang /tmp/                         \
98dfbe9b0SNico Weber // RUN:  -Xclang -internal-externc-isystem -Xclang /tmp/                 \
108dfbe9b0SNico Weber // RUN:  -Xclang -main-file-name -Xclang foo.cpp                         \
11ec4a8228SNico Weber // RUN:  -DFOO=BAR -DBAR="BAZ QUX"' --target=x86_64-linux-gnu > %t.rsp
128dfbe9b0SNico Weber 
138dfbe9b0SNico Weber // RUN: env TMPDIR=%t TEMP=%t TMP=%t RC_DEBUG_OPTIONS=1                  \
148dfbe9b0SNico Weber // RUN:  CC_PRINT_HEADERS=1 CC_LOG_DIAGNOSTICS=1                         \
158dfbe9b0SNico Weber // RUN:  not %clang %s @%t.rsp -DPARSER 2>&1 | FileCheck %s
168dfbe9b0SNico Weber // RUN: cat %t/crash-report-*.cpp | FileCheck --check-prefix=CHECKSRC %s
178dfbe9b0SNico Weber // RUN: cat %t/crash-report-*.sh | FileCheck --check-prefix=CHECKSH %s
188dfbe9b0SNico Weber 
198dfbe9b0SNico Weber // RUN: env TMPDIR=%t TEMP=%t TMP=%t RC_DEBUG_OPTIONS=1                  \
208dfbe9b0SNico Weber // RUN:  CC_PRINT_HEADERS=1 CC_LOG_DIAGNOSTICS=1                         \
218dfbe9b0SNico Weber // RUN:  not %clang %s @%t.rsp -DCRASH 2>&1 | FileCheck %s
228dfbe9b0SNico Weber // RUN: cat %t/crash-report-*.cpp | FileCheck --check-prefix=CHECKSRC %s
238dfbe9b0SNico Weber // RUN: cat %t/crash-report-*.sh | FileCheck --check-prefix=CHECKSH %s
248dfbe9b0SNico Weber 
258dfbe9b0SNico Weber // RUN: env TMPDIR=%t TEMP=%t TMP=%t RC_DEBUG_OPTIONS=1                  \
268dfbe9b0SNico Weber // RUN:  CC_PRINT_HEADERS=1 CC_LOG_DIAGNOSTICS=1                         \
278dfbe9b0SNico Weber // RUN:  not %clang %s @%t.rsp -DFATAL 2>&1 | FileCheck %s
288dfbe9b0SNico Weber // RUN: cat %t/crash-report-*.cpp | FileCheck --check-prefix=CHECKSRC %s
298dfbe9b0SNico Weber // RUN: cat %t/crash-report-*.sh | FileCheck --check-prefix=CHECKSH %s
308dfbe9b0SNico Weber 
315fd03b00SAlex Brachet // Test manually specifying -fcrash-diagnostics[=[compiler|all]] emits
325fd03b00SAlex Brachet // diagnostics
335fd03b00SAlex Brachet // RUN: env TMPDIR=%t TEMP=%t TMP=%t RC_DEBUG_OPTIONS=1                  \
345fd03b00SAlex Brachet // RUN:  CC_PRINT_HEADERS=1 CC_LOG_DIAGNOSTICS=1                         \
355fd03b00SAlex Brachet // RUN:  not %clang %s @%t.rsp -DFATAL -fcrash-diagnostics 2>&1 |        \
365fd03b00SAlex Brachet // RUN:  FileCheck %s
375fd03b00SAlex Brachet // RUN: cat %t/crash-report-*.cpp | FileCheck --check-prefix=CHECKSRC %s
385fd03b00SAlex Brachet // RUN: cat %t/crash-report-*.sh | FileCheck --check-prefix=CHECKSH %s
395fd03b00SAlex Brachet 
405fd03b00SAlex Brachet // RUN: env TMPDIR=%t TEMP=%t TMP=%t RC_DEBUG_OPTIONS=1                   \
415fd03b00SAlex Brachet // RUN:  CC_PRINT_HEADERS=1 CC_LOG_DIAGNOSTICS=1                          \
425fd03b00SAlex Brachet // RUN:  not %clang %s @%t.rsp -DFATAL -fcrash-diagnostics=compiler 2>&1 |\
435fd03b00SAlex Brachet // RUN:  FileCheck %s
445fd03b00SAlex Brachet // RUN: cat %t/crash-report-*.cpp | FileCheck --check-prefix=CHECKSRC %s
455fd03b00SAlex Brachet // RUN: cat %t/crash-report-*.sh | FileCheck --check-prefix=CHECKSH %s
465fd03b00SAlex Brachet 
475fd03b00SAlex Brachet // RUN: env TMPDIR=%t TEMP=%t TMP=%t RC_DEBUG_OPTIONS=1                  \
485fd03b00SAlex Brachet // RUN:  CC_PRINT_HEADERS=1 CC_LOG_DIAGNOSTICS=1                         \
495fd03b00SAlex Brachet // RUN:  not %clang %s @%t.rsp -DFATAL -fcrash-diagnostics=all 2>&1 |    \
505fd03b00SAlex Brachet // RUN:  FileCheck %s
515fd03b00SAlex Brachet // RUN: cat %t/crash-report-*.cpp | FileCheck --check-prefix=CHECKSRC %s
525fd03b00SAlex Brachet // RUN: cat %t/crash-report-*.sh | FileCheck --check-prefix=CHECKSH %s
535fd03b00SAlex Brachet 
548dfbe9b0SNico Weber // REQUIRES: crash-recovery
558dfbe9b0SNico Weber 
568dfbe9b0SNico Weber #ifdef PARSER
578dfbe9b0SNico Weber #pragma clang __debug parser_crash
588dfbe9b0SNico Weber #elif CRASH
598dfbe9b0SNico Weber #pragma clang __debug crash
608dfbe9b0SNico Weber #elif FATAL
618dfbe9b0SNico Weber #pragma clang __debug llvm_fatal_error
628dfbe9b0SNico Weber #endif
638dfbe9b0SNico Weber 
648dfbe9b0SNico Weber // CHECK: Preprocessed source(s) and associated run script(s) are located at:
658dfbe9b0SNico Weber // CHECK-NEXT: note: diagnostic msg: {{.*}}crash-report-{{.*}}.cpp
668dfbe9b0SNico Weber 
678dfbe9b0SNico Weber // __has_feature(cxx_exceptions) is default-on in the gcc-compatible driver.
688dfbe9b0SNico Weber FOO
698dfbe9b0SNico Weber #if __has_feature(cxx_exceptions)
708dfbe9b0SNico Weber int a = 1;
718dfbe9b0SNico Weber #else
728dfbe9b0SNico Weber int a = 0;
738dfbe9b0SNico Weber #endif
748dfbe9b0SNico Weber // CHECKSRC:      {{^}}FOO
758dfbe9b0SNico Weber // CHECKSRC-NEXT: {{^}}#if 0 /* disabled by -frewrite-includes */
768dfbe9b0SNico Weber // CHECKSRC-NEXT: {{^}}#if __has_feature(cxx_exceptions)
778dfbe9b0SNico Weber // CHECKSRC-NEXT: {{^}}#endif
788dfbe9b0SNico Weber // CHECKSRC-NEXT: {{^}}#endif /* disabled by -frewrite-includes */
798dfbe9b0SNico Weber // CHECKSRC-NEXT: {{^}}#if 1 /* evaluated by -frewrite-includes */
808dfbe9b0SNico Weber // CHECKSRC-NEXT: {{^}}#
818dfbe9b0SNico Weber // CHECKSRC-NEXT: {{^}}int a = 1;
828dfbe9b0SNico Weber // CHECKSRC-NEXT: {{^}}#else
838dfbe9b0SNico Weber // CHECKSRC-NEXT: {{^}}#
848dfbe9b0SNico Weber // CHECKSRC-NEXT: {{^}}int a = 0;
858dfbe9b0SNico Weber // CHECKSRC-NEXT: {{^}}#endif
868dfbe9b0SNico Weber 
878dfbe9b0SNico Weber // CHECKSH: # Crash reproducer
888dfbe9b0SNico Weber // CHECKSH-NEXT: # Driver args: {{.*}}"-fsyntax-only"
898dfbe9b0SNico Weber // CHECKSH-SAME: "-D" "FOO=BAR"
908dfbe9b0SNico Weber // CHECKSH-SAME: "-D" "BAR=BAZ QUX"
918dfbe9b0SNico Weber // CHECKSH-NEXT: # Original command: {{.*$}}
928dfbe9b0SNico Weber // CHECKSH-NEXT: "-cc1"
938dfbe9b0SNico Weber // CHECKSH: "-main-file-name" "crash-report.cpp"
948dfbe9b0SNico Weber // CHECKSH-NOT: "-header-include-file"
958dfbe9b0SNico Weber // CHECKSH-NOT: "-diagnostic-log-file"
968dfbe9b0SNico Weber // CHECKSH: "-D" "FOO=BAR"
978dfbe9b0SNico Weber // CHECKSH: "-D" "BAR=BAZ QUX"
988dfbe9b0SNico Weber // CHECKSH-NOT: "-F/tmp/"
998dfbe9b0SNico Weber // CHECKSH-NOT: "-I" "/tmp/"
1008dfbe9b0SNico Weber // CHECKSH-NOT: "-idirafter" "/tmp/"
1018dfbe9b0SNico Weber // CHECKSH-NOT: "-iquote" "/tmp/"
1028dfbe9b0SNico Weber // CHECKSH-NOT: "-isystem" "/tmp/"
1038dfbe9b0SNico Weber // CHECKSH-NOT: "-iprefix" "/the/prefix"
1048dfbe9b0SNico Weber // CHECKSH-NOT: "-iwithprefix" "/tmp/"
1058dfbe9b0SNico Weber // CHECKSH-NOT: "-iwithprefixbefore" "/tmp/"
1068dfbe9b0SNico Weber // CHECKSH-NOT: "-internal-isystem" "/tmp/"
1078dfbe9b0SNico Weber // CHECKSH-NOT: "-internal-externc-isystem" "/tmp/"
1088dfbe9b0SNico Weber // CHECKSH-NOT: "-dwarf-debug-flags"
1098dfbe9b0SNico Weber // CHECKSH: "crash-report-{{[^ ]*}}.cpp"
110