[clang] The real option name and not the alias used is displayed in msgs when using a config file (PR #107613)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 6 10:17:42 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-driver
Author: Sean Perry (perry-ca)
<details>
<summary>Changes</summary>
An example of this is the -mpure-code option. Without a config file being used, an error message will print `-mpure-code`. But if a config file is used, the error message will print `-mexecute-only`.
---
Full diff: https://github.com/llvm/llvm-project/pull/107613.diff
2 Files Affected:
- (modified) clang/lib/Driver/Driver.cpp (+11)
- (modified) clang/test/Driver/arm-execute-only.c (+3)
``````````diff
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 5b3783e20eabba..e4604f4e3ea753 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -998,6 +998,17 @@ static void appendOneArg(InputArgList &Args, const Arg *Opt,
Copy->setOwnsValues(Opt->getOwnsValues());
Opt->setOwnsValues(false);
Args.append(Copy);
+ if (Opt->getAlias()) {
+ const Arg *Alias = Opt->getAlias();
+ unsigned Index = Args.MakeIndex(Alias->getSpelling());
+ auto AliasCopy = std::make_unique<Arg>(Alias->getOption(), Args.getArgString(Index),
+ Index, BaseArg);
+ AliasCopy->getValues() = Alias->getValues();
+ AliasCopy->setOwnsValues(false);
+ if (Alias->isClaimed())
+ AliasCopy->claim();
+ Copy->setAlias(std::move(AliasCopy));
+ }
}
bool Driver::readConfigFile(StringRef FileName,
diff --git a/clang/test/Driver/arm-execute-only.c b/clang/test/Driver/arm-execute-only.c
index a9bf1656fd27e5..d654ec364a87f5 100644
--- a/clang/test/Driver/arm-execute-only.c
+++ b/clang/test/Driver/arm-execute-only.c
@@ -19,6 +19,9 @@
// RUN: not %clang -### --target=arm-arm-none-eabi -march=armv8-m.main -mpure-code -mno-movt %s 2>&1 \
// RUN: | FileCheck %s -check-prefix CHECK-PURE-CODE-NO-MOVT
+// RUN: echo "-DABC" > %t.cfg
+// RUN: not %clang -### --target=arm-arm-none-eabi -march=armv8-m.main -mpure-code -mno-movt --config %t.cfg %s 2>&1 \
+// RUN: | FileCheck %s -check-prefix CHECK-PURE-CODE-NO-MOVT
// CHECK-PURE-CODE-NO-MOVT: error: option '-mpure-code' cannot be specified with '-mno-movt'
// RUN: not %clang -### --target=arm-arm-none-eabi -march=armv6-m -mexecute-only -fropi %s 2>&1 \
``````````
</details>
https://github.com/llvm/llvm-project/pull/107613
More information about the cfe-commits
mailing list