mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2026-07-19 23:24:47 -04:00
[ADT] Remove APInt/APSInt toString() std::string variants
<string> is currently the highest impact header in a clang+llvm build: https://commondatastorage.googleapis.com/chromium-browser-clang/llvm-include-analysis.html One of the most common places this is being included is the APInt.h header, which needs it for an old toString() implementation that returns std::string - an inefficient method compared to the SmallString versions that it actually wraps. This patch replaces these APInt/APSInt methods with a pair of llvm::toString() helpers inside StringExtras.h, adjusts users accordingly and removes the <string> from APInt.h - I was hoping that more of these users could be converted to use the SmallString methods, but it appears that most end up creating a std::string anyhow. I avoided trying to use the raw_ostream << operators as well as I didn't want to lose having the integer radix explicit in the code. Differential Revision: https://reviews.llvm.org/D103888
This commit is contained in:
@@ -1930,7 +1930,7 @@ const MCExpr *TargetLoweringObjectFileCOFF::lowerRelativeReference(
|
||||
|
||||
static std::string APIntToHexString(const APInt &AI) {
|
||||
unsigned Width = (AI.getBitWidth() / 8) * 2;
|
||||
std::string HexString = AI.toString(16, /*Signed=*/false);
|
||||
std::string HexString = toString(AI, 16, /*Signed=*/false);
|
||||
llvm::transform(HexString, HexString.begin(), tolower);
|
||||
unsigned Size = HexString.size();
|
||||
assert(Width >= Size && "hex string is too large!");
|
||||
|
||||
Reference in New Issue
Block a user