r213578 - Fix build breakage caused by use of std::to_string(int). Replace with raw_string_ostream.

Aaron Ballman aaron at aaronballman.com
Mon Jul 21 12:31:00 PDT 2014


This is strange to me. Since we require C++11, and std::to_string is
part of C++11, this shouldn't be required. I'm wondering if the
standard library on this bot needs to be updated -- Galina, is this
something you could look into?

Thanks!

~Aaron

On Mon, Jul 21, 2014 at 3:25 PM, Mark Heffernan <meheff at google.com> wrote:
> On Jul 21, 2014 12:19 PM, "Aaron Ballman" <aaron at aaronballman.com> wrote:
>>
>> On Mon, Jul 21, 2014 at 3:06 PM, Mark Heffernan <meheff at google.com> wrote:
>> > Author: meheff
>> > Date: Mon Jul 21 14:06:29 2014
>> > New Revision: 213578
>> >
>> > URL: http://llvm.org/viewvc/llvm-project?rev=213578&view=rev
>> > Log:
>> > Fix build breakage caused by use of std::to_string(int).  Replace with
>> > raw_string_ostream.
>>
>> Out of curiosity, which bot(s) can't handle std::to_string?
>
> http://lab.llvm.org:8011/builders/clang-mergefunc-x86_64-freeBSD9.2/builds/7633
>
> Mark
>
>>
>> ~Aaron
>>
>> >
>> > Modified:
>> >     cfe/trunk/include/clang/Basic/Attr.td
>> >
>> > Modified: cfe/trunk/include/clang/Basic/Attr.td
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=213578&r1=213577&r2=213578&view=diff
>> >
>> > ==============================================================================
>> > --- cfe/trunk/include/clang/Basic/Attr.td (original)
>> > +++ cfe/trunk/include/clang/Basic/Attr.td Mon Jul 21 14:06:29 2014
>> > @@ -1814,40 +1814,45 @@ def LoopHint : Attr {
>> >        // String "unroll" of "#pragma unroll" is already emitted as the
>> >        // pragma name.
>> >        if (option == UnrollCount)
>> > -        OS << getValueString();
>> > +        printArgument(OS);
>> >        OS << "\n";
>> >        return;
>> >      }
>> >      assert(SpellingIndex == Pragma_clang_loop && "Unexpected
>> > spelling");
>> > -    OS << getOptionName(option) << getValueString() << "\n";
>> > +    OS << getOptionName(option);
>> > +    printArgument(OS);
>> > +    OS << "\n";
>> >    }
>> >
>> > -  // Return a string containing the loop hint argument including the
>> > -  // enclosing parentheses.
>> > -  std::string getValueString() const {
>> > -    std::string ValueName;
>> > +  // Prints the loop hint argument including the enclosing parentheses
>> > to OS.
>> > +  void printArgument(raw_ostream &OS) const {
>> > +    OS << "(";
>> >      if (option == VectorizeWidth || option == InterleaveCount ||
>> >          option == UnrollCount)
>> > -      ValueName = std::to_string(value);
>> > +      OS << value;
>> >      else if (value)
>> > -      ValueName = "enable";
>> > +      OS << "enable";
>> >      else
>> > -      ValueName = "disable";
>> > -
>> > -    return "(" + ValueName + ")";
>> > +      OS << "disable";
>> > +    OS << ")";
>> >    }
>> >
>> >    // Return a string suitable for identifying this attribute in
>> > diagnostics.
>> >    std::string getDiagnosticName() const {
>> > +    std::string DiagnosticName;
>> > +    llvm::raw_string_ostream OS(DiagnosticName);
>> >      unsigned SpellingIndex = getSpellingListIndex();
>> >      if (SpellingIndex == Pragma_unroll && option == Unroll)
>> > -      return "#pragma unroll";
>> > +      OS << "#pragma unroll";
>> >      else if (SpellingIndex == Pragma_unroll && option == UnrollCount) {
>> > -      return "#pragma unroll" + getValueString();
>> > +      OS << "#pragma unroll";
>> > +      printArgument(OS);
>> >      } else {
>> >        assert(SpellingIndex == Pragma_clang_loop && "Unexpected
>> > spelling");
>> > -      return std::string(getOptionName(option)) + getValueString();
>> > +      OS << getOptionName(option);
>> > +      printArgument(OS);
>> >      }
>> > +    return OS.str();
>> >    }
>> >    }];
>> >
>> >
>> >
>> > _______________________________________________
>> > cfe-commits mailing list
>> > cfe-commits at cs.uiuc.edu
>> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list