-
Notifications
You must be signed in to change notification settings - Fork 14.3k
The real option name and not the alias used is displayed in msgs when using a config file #107613
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-clang-driver Author: Sean Perry (perry-ca) ChangesAn example of this is the -mpure-code option. Without a config file being used, an error message will print Full diff: https://github.com/llvm/llvm-project/pull/107613.diff 2 Files Affected:
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 \
|
@llvm/pr-subscribers-clang Author: Sean Perry (perry-ca) ChangesAn example of this is the -mpure-code option. Without a config file being used, an error message will print Full diff: https://github.com/llvm/llvm-project/pull/107613.diff 2 Files Affected:
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 \
|
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
@redstar @abhina-sree Could you review this. Thanks |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
@mgorny could you review this too. Thanks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems to make sense and is roughly consistent with the code above.
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
.