]> granicus.if.org Git - clang/commitdiff
[driver] Before applying the working directory check if the input path
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 26 Oct 2012 20:09:24 +0000 (20:09 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 26 Oct 2012 20:09:24 +0000 (20:09 +0000)
is absolute.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166808 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Driver.cpp
test/Driver/working-directory-and-abs.c [new file with mode: 0644]

index 31492a7b6d9115c2d2f105d08e57870379d2981f..43e9e5d69f92e29dcdf1a40e0d2bc4680406dd14 100644 (file)
@@ -1018,8 +1018,8 @@ void Driver::BuildInputs(const ToolChain &TC, const DerivedArgList &Args,
       if (CheckInputsExist && memcmp(Value, "-", 2) != 0) {
         SmallString<64> Path(Value);
         if (Arg *WorkDir = Args.getLastArg(options::OPT_working_directory)) {
-          SmallString<64> Directory(WorkDir->getValue(Args));
-          if (llvm::sys::path::is_absolute(Directory.str())) {
+          if (!llvm::sys::path::is_absolute(Path.str())) {
+            SmallString<64> Directory(WorkDir->getValue(Args));
             llvm::sys::path::append(Directory, Value);
             Path.assign(Directory);
           }
diff --git a/test/Driver/working-directory-and-abs.c b/test/Driver/working-directory-and-abs.c
new file mode 100644 (file)
index 0000000..6738c77
--- /dev/null
@@ -0,0 +1 @@
+// RUN: %clang -working-directory=%S %S/working-directory-and-abs.c -fsyntax-only