diff options
author | Serge Pavlov <sepavloff@gmail.com> | 2022-08-17 11:08:30 +0700 |
---|---|---|
committer | Serge Pavlov <sepavloff@gmail.com> | 2022-08-17 18:52:53 +0700 |
commit | 956f8c0e1028edd65f68c4b386224d4ccb58c5b6 (patch) | |
tree | 975e23be60e63241f0dfee359f43264207d3b273 /clang/lib/Driver/Driver.cpp | |
parent | 7dd8e3dc0d1bd16ccbb2314f318fa7a8ac1fe762 (diff) | |
download | llvm-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.cpp | 20 |
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); } } |