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