summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2016-12-12 19:28:25 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2016-12-12 19:28:25 +0000
commit7aff2bb3d23bb1f4f970d382dc1696392ce99827 (patch)
treeb71c44e25aa600ce477d84b3b2b159df7edd7070 /clang/test
parentb4d56f1a4f972ed9ed0b5b7f61d749e025320027 (diff)
downloadbcm5719-llvm-7aff2bb3d23bb1f4f970d382dc1696392ce99827.tar.gz
bcm5719-llvm-7aff2bb3d23bb1f4f970d382dc1696392ce99827.zip
[CrashReproducer] Collect PCH included via -include-pch
Collect the necessary input PCH files. Do not try to validate the AST before copying it out because if the crash is in this path, we won't be able to collect it. Instead only check if it's a file containg an AST. rdar://problem/27913709 llvm-svn: 289460
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Modules/crash-vfs-include-pch.m43
1 files changed, 43 insertions, 0 deletions
diff --git a/clang/test/Modules/crash-vfs-include-pch.m b/clang/test/Modules/crash-vfs-include-pch.m
new file mode 100644
index 00000000000..78a8e149a41
--- /dev/null
+++ b/clang/test/Modules/crash-vfs-include-pch.m
@@ -0,0 +1,43 @@
+// REQUIRES: crash-recovery, shell, system-darwin
+//
+// RUN: rm -rf %t
+// RUN: mkdir -p %t/m %t/out
+
+// RUN: %clang_cc1 -x objective-c-header -emit-pch %S/Inputs/pch-used.h \
+// RUN: -o %t/out/pch-used.h.pch -fmodules -fimplicit-module-maps \
+// RUN: -fmodules-cache-path=%t/cache -O0 \
+// RUN: -isystem %S/Inputs/System/usr/include
+
+// RUN: not env FORCE_CLANG_DIAGNOSTICS_CRASH= TMPDIR=%t TEMP=%t TMP=%t \
+// RUN: %clang %s -E -include-pch %t/out/pch-used.h.pch -fmodules -nostdlibinc \
+// RUN: -fimplicit-module-maps -fmodules-cache-path=%t/cache -O0 \
+// RUN: -Xclang -fno-validate-pch -isystem %S/Inputs/System/usr/include \
+// RUN: -o %t/output.E 2>&1 | FileCheck %s
+
+// RUN: FileCheck --check-prefix=CHECKSH %s -input-file %t/crash-vfs-*.sh
+// RUN: FileCheck --check-prefix=CHECKYAML %s -input-file \
+// RUN: %t/crash-vfs-*.cache/vfs/vfs.yaml
+
+void f() { SPXTrace(); }
+void g() { double x = DBL_MAX; }
+
+// CHECK: Preprocessed source(s) and associated run script(s) are located at:
+// CHECK-NEXT: note: diagnostic msg: {{.*}}.m
+// CHECK-NEXT: note: diagnostic msg: {{.*}}.cache
+
+// CHECKSH: "-include-pch" "/[[INCPATH:.*]]/out/pch-used.h.pch"
+// CHECKSH: "crash-vfs-{{[^ ]*}}.m"
+// CHECKSH: "-ivfsoverlay" "crash-vfs-{{[^ ]*}}.cache/vfs/vfs.yaml"
+// CHECKSH: "-fmodules-cache-path=crash-vfs-{{[^ ]*}}.cache/repro-modules"
+
+// CHECKYAML: 'case-sensitive':
+// CHECKYAML-NEXT: 'use-external-names': 'false',
+// CHECKYAML-NEXT: 'overlay-relative': 'true',
+// CHECKYAML-NEXT: 'ignore-non-existent-contents': 'false'
+// CHECKYAML: 'type': 'directory'
+// CHECKYAML: 'name': "/[[PATH:.*]]/out",
+// CHECKYAML-NEXT: 'contents': [
+// CHECKYAML-NEXT: {
+// CHECKYAML-NEXT: 'type': 'file',
+// CHECKYAML-NEXT: 'name': "pch-used.h.pch",
+// CHECKYAML-NEXT: 'external-contents': "/[[PATH]]/out/pch-used.h.pch"
OpenPOWER on IntegriCloud