[PATCH] D113082: [lld-macho] Implement -arch_errors_fatal

Jez Ng via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 3 21:01:19 PDT 2021


int3 added inline comments.


================
Comment at: lld/MachO/InputFiles.cpp:793
+    if (config->errorForArchMismatch)
+      error(toString(this) + " has architecture " + getArchitectureName(arch) +
+            " which is incompatible with target architecture " +
----------------
keith wrote:
> int3 wrote:
> > could we factor out the arguments somehow? E.g. something like `auto f = config->errorForArchMismatch ? error : warning`? (not sure if that compiles though)
> I couldn't get a version of assigning the functions to a variable to work due to `reference to overloaded function could not be resolved`, I might have been doing something wrong?
> 
> Either way for now I added a simple lambda to de-duplicate the string, lmk what you think.
> 
> Note the whole reason I didn't assign the string to a variable instead was it seems like Twine is prime to use-after-free issues so the string was garbled in the output, clang-tidy also warned about that.
ah yeah I guess we need to use static_cast to indicate which overload we want. this should work:

     auto msg = config->errorForArchMismatch
                    ? static_cast<void (*)(const Twine &)>(error)
                    : warn;
     msg(toString(this) + " has architecture " + getArchitectureName(arch) +
         " which is incompatible with target architecture " +
         getArchitectureName(config->arch()));


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113082/new/

https://reviews.llvm.org/D113082



More information about the llvm-commits mailing list