[llvm] r254547 - [Hexagon] Remove std::hex in favor of format().

Sean Silva via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 2 14:32:52 PST 2015


We also have `format_hex` in Support/Format.h

-- Sean Silva

On Wed, Dec 2, 2015 at 1:13 PM, Alexey Samsonov via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: samsonov
> Date: Wed Dec  2 15:13:43 2015
> New Revision: 254547
>
> URL: http://llvm.org/viewvc/llvm-project?rev=254547&view=rev
> Log:
> [Hexagon] Remove std::hex in favor of format().
>
> std::hex is not used anywhere in LLVM code base except for this place,
> and it has a known undefined behavior (at least in libstdc++ 4.9.3):
> https://llvm.org/bugs/show_bug.cgi?id=18156, which fires in UBSan
> bootstrap of LLVM.
>
> Modified:
>     llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
>
> Modified: llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp?rev=254547&r1=254546&r2=254547&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp (original)
> +++ llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp Wed Dec
> 2 15:13:43 2015
> @@ -38,6 +38,7 @@
>  #include "llvm/Support/CommandLine.h"
>  #include "llvm/Support/Debug.h"
>  #include "llvm/Support/ELF.h"
> +#include "llvm/Support/Format.h"
>  #include "llvm/Support/SourceMgr.h"
>  #include "llvm/Support/MemoryBuffer.h"
>  #include "llvm/Support/TargetRegistry.h"
> @@ -1511,14 +1512,15 @@ unsigned HexagonAsmParser::validateTarge
>  }
>
>  void HexagonAsmParser::OutOfRange(SMLoc IDLoc, long long Val, long long
> Max) {
> -  std::stringstream errStr;
> -  errStr << "value " << Val << "(0x" << std::hex << Val << std::dec
> +  std::string errStr;
> +  raw_string_ostream ES(errStr);
> +  ES << "value " << Val << "(" << format("0x%" PRIx64, Val)
>           << ") out of range: ";
>    if (Max >= 0)
> -    errStr << "0-" << Max;
> +    ES << "0-" << Max;
>    else
> -    errStr << Max << "-" << (-Max - 1);
> -  Error(IDLoc, errStr.str().c_str());
> +    ES << Max << "-" << (-Max - 1);
> +  Error(IDLoc, ES.str().c_str());
>  }
>
>  int HexagonAsmParser::processInstruction(MCInst &Inst,
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151202/59169d4f/attachment.html>


More information about the llvm-commits mailing list