aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Driver.cpp
diff options
context:
space:
mode:
authorSerge Pavlov <sepavloff@gmail.com>2022-08-17 11:08:30 +0700
committerSerge Pavlov <sepavloff@gmail.com>2022-08-17 18:52:53 +0700
commit956f8c0e1028edd65f68c4b386224d4ccb58c5b6 (patch)
tree975e23be60e63241f0dfee359f43264207d3b273 /clang/lib/Driver/Driver.cpp
parent7dd8e3dc0d1bd16ccbb2314f318fa7a8ac1fe762 (diff)
downloadllvm-956f8c0e1028edd65f68c4b386224d4ccb58c5b6.zip
llvm-956f8c0e1028edd65f68c4b386224d4ccb58c5b6.tar.gz
llvm-956f8c0e1028edd65f68c4b386224d4ccb58c5b6.tar.bz2
[Driver] Override default location of config files
If directory for config files was specified in project configuration using parameters CLANG_CONFIG_FILE_SYSTEM_DIR or CLANG_CONFIG_FILE_USER_DIR, it was not overriden by command-line option `--config-system-dir=` or `--config-user-dir=` that specified empty path. This change corrects the behavior. It fixes the issue https://github.com/llvm/llvm-project/issues/56836 ([clang] [test] test/Driver/config-file-errs.c fails if CLANG_CONFIG_FILE_SYSTEM_DIR is specified).
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r--clang/lib/Driver/Driver.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 5b43a86..59ddc892 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -970,23 +970,19 @@ bool Driver::loadConfigFile() {
SmallString<128> CfgDir;
CfgDir.append(
CLOptions->getLastArgValue(options::OPT_config_system_dir_EQ));
- if (!CfgDir.empty()) {
- if (llvm::sys::fs::make_absolute(CfgDir).value() != 0)
- SystemConfigDir.clear();
- else
- SystemConfigDir = static_cast<std::string>(CfgDir);
- }
+ if (CfgDir.empty() || llvm::sys::fs::make_absolute(CfgDir))
+ SystemConfigDir.clear();
+ else
+ SystemConfigDir = static_cast<std::string>(CfgDir);
}
if (CLOptions->hasArg(options::OPT_config_user_dir_EQ)) {
SmallString<128> CfgDir;
CfgDir.append(
CLOptions->getLastArgValue(options::OPT_config_user_dir_EQ));
- if (!CfgDir.empty()) {
- if (llvm::sys::fs::make_absolute(CfgDir).value() != 0)
- UserConfigDir.clear();
- else
- UserConfigDir = static_cast<std::string>(CfgDir);
- }
+ if (CfgDir.empty() || llvm::sys::fs::make_absolute(CfgDir))
+ UserConfigDir.clear();
+ else
+ UserConfigDir = static_cast<std::string>(CfgDir);
}
}