diff options
-rw-r--r-- | clang/lib/Driver/Driver.cpp | 3 | ||||
-rw-r--r-- | clang/test/Index/pch-from-libclang.c | 18 |
2 files changed, 20 insertions, 1 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index b8ae7e4c312..6defb204134 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -79,7 +79,8 @@ Driver::Driver(StringRef ClangExecutable, StringRef DefaultTargetTriple, llvm::sys::path::append(P, ClangResourceDir); } else { StringRef ClangLibdirSuffix(CLANG_LIBDIR_SUFFIX); - llvm::sys::path::append(P, "..", Twine("lib") + ClangLibdirSuffix, "clang", + P = llvm::sys::path::parent_path(Dir); + llvm::sys::path::append(P, Twine("lib") + ClangLibdirSuffix, "clang", CLANG_VERSION_STRING); } ResourceDir = P.str(); diff --git a/clang/test/Index/pch-from-libclang.c b/clang/test/Index/pch-from-libclang.c new file mode 100644 index 00000000000..e1bbe7cbd12 --- /dev/null +++ b/clang/test/Index/pch-from-libclang.c @@ -0,0 +1,18 @@ +// Check that clang can use a PCH created from libclang. +// RUN: c-index-test -write-pch %t.h.pch %s -fmodules -fmodules-cache-path=%t.mcp +// RUN: %clang -fsyntax-only -include %t.h %s -Xclang -verify -fmodules -fmodules-cache-path=%t.mcp -Xclang -detailed-preprocessing-record + +// expected-no-diagnostics + +#ifndef HEADER +#define HEADER + +struct S { int x; }; + +#else + +void test(struct S *s) { + s->x = 0; +} + +#endif |