summaryrefslogtreecommitdiffstats
path: root/clang/test/Preprocessor
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Preprocessor')
-rw-r--r--clang/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap.json5
-rw-r--r--clang/test/Preprocessor/Inputs/nonportable-hmaps/headers/foo/Bar.h0
-rw-r--r--clang/test/Preprocessor/Inputs/nonportable-hmaps/headers/foo/Baz.h0
-rw-r--r--clang/test/Preprocessor/nonportable-include-with-hmap.c20
4 files changed, 22 insertions, 3 deletions
diff --git a/clang/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap.json b/clang/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap.json
index c69f1df7725..4852f363e0a 100644
--- a/clang/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap.json
+++ b/clang/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap.json
@@ -1,6 +1,9 @@
{
"mappings" :
{
- "Foo/Foo.h" : "headers/foo/Foo.h"
+ "Foo/Foo.h" : "headers/foo/Foo.h",
+ "Bar.h" : "headers/foo/Bar.h",
+ "Foo/Bar.h" : "INPUTS_DIR/nonportable-hmaps/headers/foo/Bar.h",
+ "headers/Foo/Baz.h" : "/not/existing/absolute/path/Baz.h"
}
}
diff --git a/clang/test/Preprocessor/Inputs/nonportable-hmaps/headers/foo/Bar.h b/clang/test/Preprocessor/Inputs/nonportable-hmaps/headers/foo/Bar.h
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Preprocessor/Inputs/nonportable-hmaps/headers/foo/Bar.h
diff --git a/clang/test/Preprocessor/Inputs/nonportable-hmaps/headers/foo/Baz.h b/clang/test/Preprocessor/Inputs/nonportable-hmaps/headers/foo/Baz.h
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/clang/test/Preprocessor/Inputs/nonportable-hmaps/headers/foo/Baz.h
diff --git a/clang/test/Preprocessor/nonportable-include-with-hmap.c b/clang/test/Preprocessor/nonportable-include-with-hmap.c
index bbbd669a0f3..6fd407c4fa5 100644
--- a/clang/test/Preprocessor/nonportable-include-with-hmap.c
+++ b/clang/test/Preprocessor/nonportable-include-with-hmap.c
@@ -1,5 +1,9 @@
+// REQUIRES: shell
+
// RUN: rm -f %t.hmap
-// RUN: %hmaptool write %S/Inputs/nonportable-hmaps/foo.hmap.json %t.hmap
+// RUN: sed -e "s:INPUTS_DIR:%S/Inputs:g" \
+// RUN: %S/Inputs/nonportable-hmaps/foo.hmap.json > %t.hmap.json
+// RUN: %hmaptool write %t.hmap.json %t.hmap
// RUN: %clang_cc1 -Eonly \
// RUN: -I%t.hmap \
// RUN: -I%S/Inputs/nonportable-hmaps \
@@ -15,4 +19,16 @@
// 5. Return.
//
// There is nothing nonportable; -Wnonportable-include-path should not fire.
-#include "Foo/Foo.h" // expected-no-diagnostics
+#include "Foo/Foo.h" // no warning
+
+// Verify files with absolute paths in the header map are handled too.
+// "Bar.h" is included twice to make sure that when we see potentially
+// nonportable path, the file has been already discovered through a relative
+// path which triggers the file to be opened and `FileEntry::RealPathName`
+// to be set.
+#include "Bar.h"
+#include "Foo/Bar.h" // no warning
+
+// But the presence of the absolute path in the header map is not enough. If we
+// didn't use it to discover a file, shouldn't suppress the warning.
+#include "headers/Foo/Baz.h" // expected-warning {{non-portable path}}
OpenPOWER on IntegriCloud