summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra
diff options
context:
space:
mode:
authorEdwin Vane <edwin.vane@intel.com>2013-06-19 17:17:31 +0000
committerEdwin Vane <edwin.vane@intel.com>2013-06-19 17:17:31 +0000
commitb31df591092dd7b9bc0f6860cd8972aad3c4be16 (patch)
tree327220955b8dee69498f1cbdc130a5f8c931ccf2 /clang-tools-extra
parentd29f1342c25a70ffbc60cb380ee6cc70453b1cf2 (diff)
downloadbcm5719-llvm-b31df591092dd7b9bc0f6860cd8972aad3c4be16.tar.gz
bcm5719-llvm-b31df591092dd7b9bc0f6860cd8972aad3c4be16.zip
cpp11-migrate: Fix parsing of '.' for header include/excludes
sys::fs::make_absolute was turning '.' into '<path>/.' which broke prefix comparison logic. Stripping these extra chars fixes the problem. llvm-svn: 184322
Diffstat (limited to 'clang-tools-extra')
-rw-r--r--clang-tools-extra/cpp11-migrate/Core/IncludeExcludeInfo.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/clang-tools-extra/cpp11-migrate/Core/IncludeExcludeInfo.cpp b/clang-tools-extra/cpp11-migrate/Core/IncludeExcludeInfo.cpp
index 65cd8eb89d0..db66a37bfb0 100644
--- a/clang-tools-extra/cpp11-migrate/Core/IncludeExcludeInfo.cpp
+++ b/clang-tools-extra/cpp11-migrate/Core/IncludeExcludeInfo.cpp
@@ -58,10 +58,18 @@ error_code parseCLInput(StringRef Line, std::vector<std::string> &List,
E = Tokens.end();
I != E; ++I) {
// Convert each path to its absolute path.
- SmallString<64> AbsolutePath = I->rtrim();
- if (error_code Err = sys::fs::make_absolute(AbsolutePath))
+ SmallString<64> Path = I->rtrim();
+ if (error_code Err = sys::fs::make_absolute(Path))
return Err;
- List.push_back(std::string(AbsolutePath.str()));
+
+ // sys::fs::make_absolute will turn "." into "<pwd>/.". Need to strip "/."
+ // off or it interferes with prefix checking.
+ if (Path.endswith("/."))
+ List.push_back(Path.slice(0, Path.size() - 2).str());
+ else
+ List.push_back(Path.str());
+
+ llvm::errs() << "Parse: " <<List.back() << "\n";
}
return error_code::success();
}
OpenPOWER on IntegriCloud