[lld] r202645 - [C++11] Work around an incompatibility between llvm::tie and std::tie.

Hal Finkel hfinkel at anl.gov
Sun Mar 2 06:32:25 PST 2014


----- Original Message -----
> From: "Benjamin Kramer" <benny.kra at googlemail.com>
> To: llvm-commits at cs.uiuc.edu
> Sent: Sunday, March 2, 2014 7:45:18 AM
> Subject: [lld] r202645 - [C++11] Work around an incompatibility between	llvm::tie and std::tie.
> 
> Author: d0k
> Date: Sun Mar  2 07:45:18 2014
> New Revision: 202645
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=202645&view=rev
> Log:
> [C++11] Work around an incompatibility between llvm::tie and
> std::tie.

What's the incompatibility? These look like textual replacements.

 -Hal

> 
> Modified:
>     lld/trunk/lib/Driver/WinLinkDriver.cpp
>     lld/trunk/lib/Driver/WinLinkModuleDef.cpp
>     lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp
> 
> Modified: lld/trunk/lib/Driver/WinLinkDriver.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/WinLinkDriver.cpp?rev=202645&r1=202644&r2=202645&view=diff
> ==============================================================================
> --- lld/trunk/lib/Driver/WinLinkDriver.cpp (original)
> +++ lld/trunk/lib/Driver/WinLinkDriver.cpp Sun Mar  2 07:45:18 2014
> @@ -97,7 +97,7 @@ static std::vector<StringRef> splitPathL
>    std::vector<StringRef> ret;
>    while (!str.empty()) {
>      StringRef path;
> -    llvm::tie(path, str) = str.split(';');
> +    std::tie(path, str) = str.split(';');
>      ret.push_back(path);
>    }
>    return ret;
> @@ -107,7 +107,7 @@ static std::vector<StringRef> splitPathL
>  // "<string>=<string>".
>  static bool parseAlternateName(StringRef arg, StringRef &weak,
>  StringRef &def,
>                                 raw_ostream &diagnostics) {
> -  llvm::tie(weak, def) = arg.split('=');
> +  std::tie(weak, def) = arg.split('=');
>    if (weak.empty() || def.empty()) {
>      diagnostics << "Error: malformed /alternatename option: " << arg
>      << "\n";
>      return false;
> @@ -120,7 +120,7 @@ static bool parseAlternateName(StringRef
>  static bool parseMemoryOption(StringRef arg, uint64_t &reserve,
>                                uint64_t &commit) {
>    StringRef reserveStr, commitStr;
> -  llvm::tie(reserveStr, commitStr) = arg.split(',');
> +  std::tie(reserveStr, commitStr) = arg.split(',');
>    if (reserveStr.getAsInteger(0, reserve))
>      return false;
>    if (!commitStr.empty() && commitStr.getAsInteger(0, commit))
> @@ -132,7 +132,7 @@ static bool parseMemoryOption(StringRef
>  // "<integer>[.<integer>]".
>  static bool parseVersion(StringRef arg, uint32_t &major, uint32_t
>  &minor) {
>    StringRef majorVersion, minorVersion;
> -  llvm::tie(majorVersion, minorVersion) = arg.split('.');
> +  std::tie(majorVersion, minorVersion) = arg.split('.');
>    if (minorVersion.empty())
>      minorVersion = "0";
>    if (majorVersion.getAsInteger(0, major))
> @@ -168,7 +168,7 @@ static bool parseSubsystem(StringRef arg
>                             llvm::Optional<uint32_t> &minor,
>                             raw_ostream &diagnostics) {
>    StringRef subsystemStr, osVersion;
> -  llvm::tie(subsystemStr, osVersion) = arg.split(',');
> +  std::tie(subsystemStr, osVersion) = arg.split(',');
>    if (!osVersion.empty()) {
>      uint32_t v1, v2;
>      if (!parseVersion(osVersion, v1, v2))
> @@ -208,7 +208,7 @@ static bool parseSection(StringRef optio
>                           llvm::Optional<uint32_t> &flags,
>                           llvm::Optional<uint32_t> &mask) {
>    StringRef flagString;
> -  llvm::tie(section, flagString) = option.split(",");
> +  std::tie(section, flagString) = option.split(",");
>  
>    bool negative = false;
>    if (flagString.startswith("!")) {
> @@ -294,14 +294,14 @@ static bool parseManifestUac(StringRef o
>      if (option.startswith_lower("level=")) {
>        option = option.substr(strlen("level="));
>        StringRef value;
> -      llvm::tie(value, option) = option.split(" ");
> +      std::tie(value, option) = option.split(" ");
>        level = value.str();
>        continue;
>      }
>      if (option.startswith_lower("uiaccess=")) {
>        option = option.substr(strlen("uiaccess="));
>        StringRef value;
> -      llvm::tie(value, option) = option.split(" ");
> +      std::tie(value, option) = option.split(" ");
>        uiAccess = value.str();
>        continue;
>      }
> @@ -314,7 +314,7 @@ static bool parseExport(StringRef option
>                          PECOFFLinkingContext::ExportDesc &ret) {
>    StringRef name;
>    StringRef rest;
> -  llvm::tie(name, rest) = option.split(",");
> +  std::tie(name, rest) = option.split(",");
>    if (name.empty())
>      return false;
>    ret.name = name;
> @@ -323,7 +323,7 @@ static bool parseExport(StringRef option
>      if (rest.empty())
>        return true;
>      StringRef arg;
> -    llvm::tie(arg, rest) = rest.split(",");
> +    std::tie(arg, rest) = rest.split(",");
>      if (arg.equals_lower("noname")) {
>        if (ret.ordinal < 0)
>          return false;
> @@ -404,7 +404,7 @@ static void quoteAndPrintXml(raw_ostream
>      if (str.empty())
>        return;
>      StringRef line;
> -    llvm::tie(line, str) = str.split("\n");
> +    std::tie(line, str) = str.split("\n");
>      if (line.empty())
>        continue;
>      out << '\"';
> @@ -542,7 +542,7 @@ handleFailIfMismatchOption(StringRef opt
>                             std::map<StringRef, StringRef>
>                             &mustMatch,
>                             raw_ostream &diagnostics) {
>    StringRef key, value;
> -  llvm::tie(key, value) = option.split('=');
> +  std::tie(key, value) = option.split('=');
>    if (key.empty() || value.empty()) {
>      diagnostics << "error: malformed /failifmismatch option: " <<
>      option << "\n";
>      return true;
> @@ -815,7 +815,7 @@ WinLinkDriver::parse(int argc, const cha
>      case OPT_merge: {
>        // Parse /merge:<from>=<to>.
>        StringRef from, to;
> -      llvm::tie(from, to) =
> StringRef(inputArg->getValue()).split('=');
> +      std::tie(from, to) =
> StringRef(inputArg->getValue()).split('=');
>        if (from.empty() || to.empty()) {
>          diagnostics << "error: malformed /merge option: "
>                      << inputArg->getValue() << "\n";
> 
> Modified: lld/trunk/lib/Driver/WinLinkModuleDef.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/WinLinkModuleDef.cpp?rev=202645&r1=202644&r2=202645&view=diff
> ==============================================================================
> --- lld/trunk/lib/Driver/WinLinkModuleDef.cpp (original)
> +++ lld/trunk/lib/Driver/WinLinkModuleDef.cpp Sun Mar  2 07:45:18
> 2014
> @@ -221,7 +221,7 @@ bool Parser::parseVersion(int &major, in
>    if (_tok._kind != Kind::identifier)
>      return false;
>    StringRef v1, v2;
> -  llvm::tie(v1, v2) = _tok._range.split('.');
> +  std::tie(v1, v2) = _tok._range.split('.');
>    if (v1.getAsInteger(10, major))
>      return false;
>    if (v2.empty()) {
> 
> Modified: lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp?rev=202645&r1=202644&r2=202645&view=diff
> ==============================================================================
> --- lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp (original)
> +++ lld/trunk/lib/ReaderWriter/PECOFF/EdataPass.cpp Sun Mar  2
> 07:45:18 2014
> @@ -144,7 +144,7 @@ void EdataPass::perform(std::unique_ptr<
>      return;
>  
>    int ordinalBase, maxOrdinal;
> -  llvm::tie(ordinalBase, maxOrdinal) = getOrdinalBase(entries);
> +  std::tie(ordinalBase, maxOrdinal) = getOrdinalBase(entries);
>  
>    std::vector<TableEntry> namedEntries;
>    for (TableEntry &e : entries)
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-commits mailing list