aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2019-07-05 11:45:24 +0000
committerNico Weber <nicolasweber@gmx.de>2019-07-05 11:45:24 +0000
commitdd555f13819bbdedfcdc3852a7d1591bd73df0f8 (patch)
tree6e59605930f6fa2aa9ad4a093df47a709c4e477d
parentd64c3f9cea2591308c5f0338c96b1f5edab7e288 (diff)
Make joined instances of JoinedOrSeparate flags point to the unaliased args, like all other arg types do
This fixes an 8-year-old regression. r105763 made it so that aliases always refer to the unaliased option – but it missed the "joined" branch of JoinedOrSeparate flags. (r162231 then made the Args classes non-virtual, and r169344 moved them from clang to llvm.) Back then, there was no JoinedOrSeparate flag that was an alias, so it wasn't observable. Now /U in CLCompatOptions is a JoinedOrSeparate alias in clang, and warn_slash_u_filename incorrectly used the aliased arg id (using the unaliased one isn't really a regression since that warning checks if the undefined macro contains slash or backslash and only then emits the warning – and no valid use will pass "-Ufoo/bar" or similar). Also, lld has many JoinedOrSeparate aliases, and due to this bug it had to explicitly call `getUnaliasedOption()` in a bunch of places, even though that shouldn't be necessary by design. After this fix in Option, these calls really don't have an effect any more, so remove them. No intended behavior change. (I accidentally fixed this bug while working on PR29106 but then wondered why the warn_slash_u_filename broke. When I figured it out, I thought it would make sense to land this in a separate commit.) Differential Revision: https://reviews.llvm.org/D64156 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@365186 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--COFF/Driver.cpp2
-rw-r--r--ELF/Driver.cpp2
-rw-r--r--ELF/DriverUtils.cpp2
-rw-r--r--MinGW/Driver.cpp2
-rw-r--r--wasm/Driver.cpp4
5 files changed, 6 insertions, 6 deletions
diff --git a/COFF/Driver.cpp b/COFF/Driver.cpp
index 413b1e7a3..415715415 100644
--- a/COFF/Driver.cpp
+++ b/COFF/Driver.cpp
@@ -332,7 +332,7 @@ void LinkerDriver::parseDirectives(InputFile *File) {
}
for (auto *Arg : Args) {
- switch (Arg->getOption().getUnaliasedOption().getID()) {
+ switch (Arg->getOption().getID()) {
case OPT_aligncomm:
parseAligncomm(Arg->getValue());
break;
diff --git a/ELF/Driver.cpp b/ELF/Driver.cpp
index af5bd241b..65b4ad39b 100644
--- a/ELF/Driver.cpp
+++ b/ELF/Driver.cpp
@@ -1112,7 +1112,7 @@ void LinkerDriver::createFiles(opt::InputArgList &Args) {
// Iterate over argv to process input files and positional arguments.
for (auto *Arg : Args) {
- switch (Arg->getOption().getUnaliasedOption().getID()) {
+ switch (Arg->getOption().getID()) {
case OPT_library:
addLibrary(Arg->getValue());
break;
diff --git a/ELF/DriverUtils.cpp b/ELF/DriverUtils.cpp
index e6a482b49..e985a077f 100644
--- a/ELF/DriverUtils.cpp
+++ b/ELF/DriverUtils.cpp
@@ -172,7 +172,7 @@ std::string elf::createResponseFile(const opt::InputArgList &Args) {
// Copy the command line to the output while rewriting paths.
for (auto *Arg : Args) {
- switch (Arg->getOption().getUnaliasedOption().getID()) {
+ switch (Arg->getOption().getID()) {
case OPT_reproduce:
break;
case OPT_INPUT:
diff --git a/MinGW/Driver.cpp b/MinGW/Driver.cpp
index 57fed1a43..979d3091f 100644
--- a/MinGW/Driver.cpp
+++ b/MinGW/Driver.cpp
@@ -313,7 +313,7 @@ bool mingw::link(ArrayRef<const char *> ArgsArr, raw_ostream &Diag) {
StringRef Prefix = "";
bool Static = false;
for (auto *A : Args) {
- switch (A->getOption().getUnaliasedOption().getID()) {
+ switch (A->getOption().getID()) {
case OPT_INPUT:
if (StringRef(A->getValue()).endswith_lower(".def"))
Add("-def:" + StringRef(A->getValue()));
diff --git a/wasm/Driver.cpp b/wasm/Driver.cpp
index 307213e8d..1a2861268 100644
--- a/wasm/Driver.cpp
+++ b/wasm/Driver.cpp
@@ -271,7 +271,7 @@ void LinkerDriver::addLibrary(StringRef Name) {
void LinkerDriver::createFiles(opt::InputArgList &Args) {
for (auto *Arg : Args) {
- switch (Arg->getOption().getUnaliasedOption().getID()) {
+ switch (Arg->getOption().getID()) {
case OPT_l:
addLibrary(Arg->getValue());
break;
@@ -531,7 +531,7 @@ static std::string createResponseFile(const opt::InputArgList &Args) {
// Copy the command line to the output while rewriting paths.
for (auto *Arg : Args) {
- switch (Arg->getOption().getUnaliasedOption().getID()) {
+ switch (Arg->getOption().getID()) {
case OPT_reproduce:
break;
case OPT_INPUT: