Implement MSVC header search algorithm in MicrosoftMode.
Follows algorithm described here: http://msdn.microsoft.com/en-us/library/36k2cdd4.aspx
llvm-svn: 198082
diff --git a/clang/test/Preprocessor/microsoft-header-search.c b/clang/test/Preprocessor/microsoft-header-search.c
new file mode 100644
index 0000000..6c39b96
--- /dev/null
+++ b/clang/test/Preprocessor/microsoft-header-search.c
@@ -0,0 +1,6 @@
+// RUN: %clang_cc1 -I%S/microsoft-header-search %s -fms-compatibility -verify
+
+// expected-warning@microsoft-header-search/a/findme.h:3 {{findme.h successfully included using MS search rules}}
+// expected-warning@microsoft-header-search/a/b/include3.h:3 {{#include resolved using non-portable MSVC search rules as}}
+
+#include "microsoft-header-search/include1.h"
\ No newline at end of file
diff --git a/clang/test/Preprocessor/microsoft-header-search/a/b/include3.h b/clang/test/Preprocessor/microsoft-header-search/a/b/include3.h
new file mode 100644
index 0000000..6f6ce40
--- /dev/null
+++ b/clang/test/Preprocessor/microsoft-header-search/a/b/include3.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#include "findme.h"
\ No newline at end of file
diff --git a/clang/test/Preprocessor/microsoft-header-search/a/findme.h b/clang/test/Preprocessor/microsoft-header-search/a/findme.h
new file mode 100644
index 0000000..b809c90
--- /dev/null
+++ b/clang/test/Preprocessor/microsoft-header-search/a/findme.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#warning findme.h successfully included using MS search rules
\ No newline at end of file
diff --git a/clang/test/Preprocessor/microsoft-header-search/a/include2.h b/clang/test/Preprocessor/microsoft-header-search/a/include2.h
new file mode 100644
index 0000000..99640ae
--- /dev/null
+++ b/clang/test/Preprocessor/microsoft-header-search/a/include2.h
@@ -0,0 +1,6 @@
+#pragma once
+
+#include "b/include3.h"
+#pragma once
+
+#include "b/include3.h"
\ No newline at end of file
diff --git a/clang/test/Preprocessor/microsoft-header-search/findme.h b/clang/test/Preprocessor/microsoft-header-search/findme.h
new file mode 100644
index 0000000..aeaf795
--- /dev/null
+++ b/clang/test/Preprocessor/microsoft-header-search/findme.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#error Wrong findme.h included, MSVC header search incorrect
\ No newline at end of file
diff --git a/clang/test/Preprocessor/microsoft-header-search/include1.h b/clang/test/Preprocessor/microsoft-header-search/include1.h
new file mode 100644
index 0000000..f00fac7
--- /dev/null
+++ b/clang/test/Preprocessor/microsoft-header-search/include1.h
@@ -0,0 +1,6 @@
+#pragma once
+
+#include "a/include2.h"
+#pragma once
+
+#include "a/include2.h"
\ No newline at end of file