diff options
author | Ben Langmuir <blangmuir@apple.com> | 2014-02-28 21:16:07 +0000 |
---|---|---|
committer | Ben Langmuir <blangmuir@apple.com> | 2014-02-28 21:16:07 +0000 |
commit | d066d4c849be06a01c0d17e8dc206913f4e7bfe3 (patch) | |
tree | 546f4a519c542578e5c03bfe24077319ffab8f2b /clang/test | |
parent | a98d400fec0e41392d66eb1c1df631c534a8760c (diff) | |
download | bcm5719-llvm-d066d4c849be06a01c0d17e8dc206913f4e7bfe3.tar.gz bcm5719-llvm-d066d4c849be06a01c0d17e8dc206913f4e7bfe3.zip |
Reapply fixed "Honour 'use-external-names' in FileManager"
Was r202442
There were two issues with the original patch that have now been fixed.
1. We were memset'ing over a FileEntry in a test case. After adding a
std::string to FileEntry, this still happened to not break for me.
2. I didn't pass the FileManager into the new compiler instance in
compileModule. This was hidden in some cases by the fact I didn't
clear the module cache in the test.
Also, I changed the copy constructor for FileEntry, which was memcpy'ing
in a (now) unsafe way.
llvm-svn: 202539
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/VFS/Inputs/external-names.h | 4 | ||||
-rw-r--r-- | clang/test/VFS/Inputs/use-external-names.yaml | 7 | ||||
-rw-r--r-- | clang/test/VFS/external-names.c | 35 | ||||
-rw-r--r-- | clang/test/VFS/module-import.m | 1 |
4 files changed, 47 insertions, 0 deletions
diff --git a/clang/test/VFS/Inputs/external-names.h b/clang/test/VFS/Inputs/external-names.h new file mode 100644 index 00000000000..8b0baa3f023 --- /dev/null +++ b/clang/test/VFS/Inputs/external-names.h @@ -0,0 +1,4 @@ +void foo(char **c) { + *c = __FILE__; + int x = c; // produce a diagnostic +} diff --git a/clang/test/VFS/Inputs/use-external-names.yaml b/clang/test/VFS/Inputs/use-external-names.yaml new file mode 100644 index 00000000000..b9ea6342cf0 --- /dev/null +++ b/clang/test/VFS/Inputs/use-external-names.yaml @@ -0,0 +1,7 @@ +{ + 'version': 0, + 'use-external-names': EXTERNAL_NAMES, + 'roots': [{ 'type': 'file', 'name': 'OUT_DIR/external-names.h', + 'external-contents': 'INPUT_DIR/external-names.h' + }] +} diff --git a/clang/test/VFS/external-names.c b/clang/test/VFS/external-names.c new file mode 100644 index 00000000000..aa0bd674530 --- /dev/null +++ b/clang/test/VFS/external-names.c @@ -0,0 +1,35 @@ +// RUN: sed -e "s:INPUT_DIR:%S/Inputs:g" -e "s:OUT_DIR:%t:g" -e "s:EXTERNAL_NAMES:true:" %S/Inputs/use-external-names.yaml > %t.external.yaml +// RUN: sed -e "s:INPUT_DIR:%S/Inputs:g" -e "s:OUT_DIR:%t:g" -e "s:EXTERNAL_NAMES:false:" %S/Inputs/use-external-names.yaml > %t.yaml +// REQUIRES: shell + +#include "external-names.h" + +//// +// Preprocessor (__FILE__ macro and # directives): + +// RUN: %clang_cc1 -I %t -ivfsoverlay %t.external.yaml -E %s | FileCheck -check-prefix=CHECK-PP-EXTERNAL %s +// CHECK-PP-EXTERNAL: # {{[0-9]*}} "[[NAME:.*Inputs.external-names.h]]" +// CHECK-PP-EXTERNAL-NEXT: void foo(char **c) { +// CHECK-PP-EXTERNAL-NEXT: *c = "[[NAME]]"; + +// RUN: %clang_cc1 -I %t -ivfsoverlay %t.yaml -E %s | FileCheck -check-prefix=CHECK-PP %s +// CHECK-PP-NOT: Inputs + +//// +// Diagnostics: + +// RUN: %clang_cc1 -I %t -ivfsoverlay %t.external.yaml -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-DIAG-EXTERNAL %s +// CHECK-DIAG-EXTERNAL: {{.*}}Inputs{{.}}external-names.h:{{[0-9]*:[0-9]*}}: warning: incompatible pointer + +// RUN: %clang_cc1 -I %t -ivfsoverlay %t.yaml -fsyntax-only %s 2>&1 | FileCheck -check-prefix=CHECK-DIAG %s +// CHECK-DIAG-NOT: Inputs + +//// +// Debug info + +// RUN: %clang_cc1 -I %t -ivfsoverlay %t.external.yaml -triple %itanium_abi_triple -g -emit-llvm %s -o - | FileCheck -check-prefix=CHECK-DEBUG-EXTERNAL %s +// CHECK-DEBUG-EXTERNAL: ![[Num:[0-9]*]] = metadata !{metadata !"{{.*}}Inputs{{.}}external-names.h +// CHECK-DEBUG-EXTERNAL: metadata !{i32 {{[0-9]*}}, metadata ![[Num]]{{.*}}DW_TAG_file_type + +// RUN: %clang_cc1 -I %t -ivfsoverlay %t.yaml -triple %itanium_abi_triple -g -emit-llvm %s -o - | FileCheck -check-prefix=CHECK-DEBUG %s +// CHECK-DEBUG-NOT: Inputs diff --git a/clang/test/VFS/module-import.m b/clang/test/VFS/module-import.m index 80f0ea58f1d..3cfd906d767 100644 --- a/clang/test/VFS/module-import.m +++ b/clang/test/VFS/module-import.m @@ -1,3 +1,4 @@ +// RUN: rm -rf %t // RUN: sed -e "s:INPUT_DIR:%S/Inputs:g" -e "s:OUT_DIR:%t:g" %S/Inputs/vfsoverlay.yaml > %t.yaml // RUN: %clang_cc1 -Werror -fmodules -fmodules-cache-path=%t -ivfsoverlay %t.yaml -I %t -fsyntax-only %s // REQUIRES: shell |