[llvm] [llvm] Use llvm::replace (NFC) (PR #137481)
Kazu Hirata via llvm-commits
llvm-commits at lists.llvm.org
Sat Apr 26 16:33:24 PDT 2025
https://github.com/kazutakahirata updated https://github.com/llvm/llvm-project/pull/137481
>From 4bff5edca3f2c575ebd5327e2c65e68ab794d0f7 Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Sat, 26 Apr 2025 16:02:05 -0700
Subject: [PATCH 1/2] [llvm] Use llvm::replace (NFC)
---
llvm/include/llvm/TableGen/DirectiveEmitter.h | 2 +-
llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp | 2 +-
.../LiveDebugValues/InstrRefBasedImpl.cpp | 3 +--
llvm/lib/CodeGen/LiveVariables.cpp | 2 +-
.../CodeGen/SelectionDAG/SelectionDAGISel.cpp | 3 +--
.../DebugInfo/LogicalView/Core/LVSupport.cpp | 2 +-
llvm/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp | 2 +-
llvm/lib/Support/GraphWriter.cpp | 3 +--
llvm/lib/Support/Path.cpp | 4 ++--
.../Target/SPIRV/SPIRVPrepareFunctions.cpp | 2 +-
.../WebAssemblyLowerEmscriptenEHSjLj.cpp | 2 +-
llvm/lib/Target/X86/X86ISelLowering.cpp | 5 ++---
llvm/lib/Transforms/Utils/LoopUnroll.cpp | 2 +-
llvm/tools/llvm-config/llvm-config.cpp | 19 +++++++++----------
llvm/unittests/IR/DataLayoutTest.cpp | 2 +-
llvm/unittests/Support/Path.cpp | 6 ++----
16 files changed, 27 insertions(+), 34 deletions(-)
diff --git a/llvm/include/llvm/TableGen/DirectiveEmitter.h b/llvm/include/llvm/TableGen/DirectiveEmitter.h
index 22a0ae583e84d..b856bb77f7b74 100644
--- a/llvm/include/llvm/TableGen/DirectiveEmitter.h
+++ b/llvm/include/llvm/TableGen/DirectiveEmitter.h
@@ -116,7 +116,7 @@ class BaseRecord {
std::string getFormattedName() const {
StringRef Name = Def->getValueAsString("name");
std::string N = Name.str();
- std::replace(N.begin(), N.end(), ' ', '_');
+ llvm::replace(N, ' ', '_');
return N;
}
diff --git a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
index 475e1c0a80bd4..df4e48571692c 100644
--- a/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
@@ -164,7 +164,7 @@ StringRef CodeViewDebug::getFullFilepath(const DIFile *File) {
// Canonicalize the path. We have to do it textually because we may no longer
// have access the file in the filesystem.
// First, replace all slashes with backslashes.
- std::replace(Filepath.begin(), Filepath.end(), '/', '\\');
+ llvm::replace(Filepath, '/', '\\');
// Remove all "\.\" with "\".
size_t Cursor = 0;
diff --git a/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp b/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp
index c70c638dc016c..6bbd130fa7a9e 100644
--- a/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp
+++ b/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp
@@ -928,8 +928,7 @@ class TransferTracker {
assert(ActiveVLocIt != ActiveVLocs.end());
// Update all instances of Src in the variable's tracked values to Dst.
- std::replace(ActiveVLocIt->second.Ops.begin(),
- ActiveVLocIt->second.Ops.end(), SrcOp, DstOp);
+ llvm::replace(ActiveVLocIt->second.Ops, SrcOp, DstOp);
auto &[Var, DILoc] = DVMap.lookupDVID(VarID);
MachineInstr *MI = MTracker->emitLoc(ActiveVLocIt->second.Ops, Var, DILoc,
diff --git a/llvm/lib/CodeGen/LiveVariables.cpp b/llvm/lib/CodeGen/LiveVariables.cpp
index f8e0583839b23..f0bb439e82372 100644
--- a/llvm/lib/CodeGen/LiveVariables.cpp
+++ b/llvm/lib/CodeGen/LiveVariables.cpp
@@ -764,7 +764,7 @@ void LiveVariables::recomputeForSingleDefVirtReg(Register Reg) {
void LiveVariables::replaceKillInstruction(Register Reg, MachineInstr &OldMI,
MachineInstr &NewMI) {
VarInfo &VI = getVarInfo(Reg);
- std::replace(VI.Kills.begin(), VI.Kills.end(), &OldMI, &NewMI);
+ llvm::replace(VI.Kills, &OldMI, &NewMI);
}
/// removeVirtualRegistersKilled - Remove all killed info for the specified
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index 62d911fed2a3f..62dfd7cf93fed 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -2713,8 +2713,7 @@ void SelectionDAGISel::UpdateChains(
assert(ChainVal.getValueType() == MVT::Other && "Not a chain?");
SelectionDAG::DAGNodeDeletedListener NDL(
*CurDAG, [&](SDNode *N, SDNode *E) {
- std::replace(ChainNodesMatched.begin(), ChainNodesMatched.end(), N,
- static_cast<SDNode *>(nullptr));
+ llvm::replace(ChainNodesMatched, N, static_cast<SDNode *>(nullptr));
});
if (ChainNode->getOpcode() != ISD::TokenFactor)
ReplaceUses(ChainVal, InputChain);
diff --git a/llvm/lib/DebugInfo/LogicalView/Core/LVSupport.cpp b/llvm/lib/DebugInfo/LogicalView/Core/LVSupport.cpp
index 3cdd5f8c84b38..da6ba8dfd483b 100644
--- a/llvm/lib/DebugInfo/LogicalView/Core/LVSupport.cpp
+++ b/llvm/lib/DebugInfo/LogicalView/Core/LVSupport.cpp
@@ -31,7 +31,7 @@ LVStringPool &llvm::logicalview::getStringPool() { return StringPool; }
std::string llvm::logicalview::transformPath(StringRef Path) {
std::string Name(Path);
std::transform(Name.begin(), Name.end(), Name.begin(), tolower);
- std::replace(Name.begin(), Name.end(), '\\', '/');
+ llvm::replace(Name, '\\', '/');
// Remove all duplicate slashes.
size_t Pos = 0;
diff --git a/llvm/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp b/llvm/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp
index 9ca47ac51e565..08e8e5f9e0ed1 100644
--- a/llvm/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp
+++ b/llvm/lib/DebugInfo/PDB/PDBSymbolCompiland.cpp
@@ -63,7 +63,7 @@ std::string PDBSymbolCompiland::getSourceFileFullPath() const {
auto Len = EnvWorkingDir.length();
if (EnvWorkingDir[Len - 1] != '/' && EnvWorkingDir[Len - 1] != '\\') {
std::string Path = EnvWorkingDir + "\\" + EnvSrc;
- std::replace(Path.begin(), Path.end(), '/', '\\');
+ llvm::replace(Path, '/', '\\');
// We will return it as full path if we can't find a better one.
if (sys::path::is_absolute(Path))
SourceFileFullPath = Path;
diff --git a/llvm/lib/Support/GraphWriter.cpp b/llvm/lib/Support/GraphWriter.cpp
index e353ab86b5e80..79ed0e4a487cf 100644
--- a/llvm/lib/Support/GraphWriter.cpp
+++ b/llvm/lib/Support/GraphWriter.cpp
@@ -103,8 +103,7 @@ static std::string replaceIllegalFilenameChars(std::string Filename,
is_style_windows(sys::path::Style::native) ? "\\/:?\"<>|" : "/";
for (char IllegalChar : IllegalChars) {
- std::replace(Filename.begin(), Filename.end(), IllegalChar,
- ReplacementChar);
+ llvm::replace(Filename, IllegalChar, ReplacementChar);
}
return Filename;
diff --git a/llvm/lib/Support/Path.cpp b/llvm/lib/Support/Path.cpp
index d775285197103..761d29e960887 100644
--- a/llvm/lib/Support/Path.cpp
+++ b/llvm/lib/Support/Path.cpp
@@ -561,7 +561,7 @@ void native(SmallVectorImpl<char> &Path, Style style) {
Path = PathHome;
}
} else {
- std::replace(Path.begin(), Path.end(), '\\', '/');
+ llvm::replace(Path, '\\', '/');
}
}
@@ -570,7 +570,7 @@ std::string convert_to_slash(StringRef path, Style style) {
return std::string(path);
std::string s = path.str();
- std::replace(s.begin(), s.end(), '\\', '/');
+ llvm::replace(s, '\\', '/');
return s;
}
diff --git a/llvm/lib/Target/SPIRV/SPIRVPrepareFunctions.cpp b/llvm/lib/Target/SPIRV/SPIRVPrepareFunctions.cpp
index bd039871dec44..965a88640aec4 100644
--- a/llvm/lib/Target/SPIRV/SPIRVPrepareFunctions.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVPrepareFunctions.cpp
@@ -67,7 +67,7 @@ static std::string lowerLLVMIntrinsicName(IntrinsicInst *II) {
Function *IntrinsicFunc = II->getCalledFunction();
assert(IntrinsicFunc && "Missing function");
std::string FuncName = IntrinsicFunc->getName().str();
- std::replace(FuncName.begin(), FuncName.end(), '.', '_');
+ llvm::replace(FuncName, '.', '_');
FuncName = "spirv." + FuncName;
return FuncName;
}
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp
index 0e79a13d4ccaa..ea410015a82f3 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyLowerEmscriptenEHSjLj.cpp
@@ -436,7 +436,7 @@ static std::string getSignature(FunctionType *FTy) {
erase_if(Sig, isSpace);
// When s2wasm parses .s file, a comma means the end of an argument. So a
// mangled function name can contain any character but a comma.
- std::replace(Sig.begin(), Sig.end(), ',', '.');
+ llvm::replace(Sig, ',', '.');
return Sig;
}
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index b07843523a15b..c9c2c8ffe72c1 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -14030,7 +14030,7 @@ static SDValue lowerV8I16GeneralSingleInputShuffle(
// a dword. We find the adjacent index by toggling the low bit.
int AdjIndex = InPlaceInputs[0] ^ 1;
SourceHalfMask[AdjIndex - HalfOffset] = InPlaceInputs[1] - HalfOffset;
- std::replace(HalfMask.begin(), HalfMask.end(), InPlaceInputs[1], AdjIndex);
+ llvm::replace(HalfMask, InPlaceInputs[1], AdjIndex);
PSHUFDMask[AdjIndex / 2] = AdjIndex / 2;
};
fixInPlaceInputs(LToLInputs, HToLInputs, PSHUFLMask, LoMask, 0);
@@ -14114,8 +14114,7 @@ static SDValue lowerV8I16GeneralSingleInputShuffle(
SourceOffset;
SourceHalfMask[InputFixed - SourceOffset] =
IncomingInputs[0] - SourceOffset;
- std::replace(HalfMask.begin(), HalfMask.end(), IncomingInputs[0],
- InputFixed);
+ llvm::replace(HalfMask, IncomingInputs[0], InputFixed);
IncomingInputs[0] = InputFixed;
}
} else if (IncomingInputs.size() == 2) {
diff --git a/llvm/lib/Transforms/Utils/LoopUnroll.cpp b/llvm/lib/Transforms/Utils/LoopUnroll.cpp
index 45b49671dd3b6..ac7d18feb5b31 100644
--- a/llvm/lib/Transforms/Utils/LoopUnroll.cpp
+++ b/llvm/lib/Transforms/Utils/LoopUnroll.cpp
@@ -997,7 +997,7 @@ llvm::UnrollLoop(Loop *L, UnrollLoopOptions ULO, LoopInfo *LI,
/*PredecessorWithTwoSuccessors=*/false,
DTUToUse ? nullptr : DT)) {
// Dest has been folded into Fold. Update our worklists accordingly.
- std::replace(Latches.begin(), Latches.end(), Dest, Fold);
+ llvm::replace(Latches, Dest, Fold);
llvm::erase(UnrolledLoopBlocks, Dest);
}
}
diff --git a/llvm/tools/llvm-config/llvm-config.cpp b/llvm/tools/llvm-config/llvm-config.cpp
index a54538bb534ad..27523bdcb6e97 100644
--- a/llvm/tools/llvm-config/llvm-config.cpp
+++ b/llvm/tools/llvm-config/llvm-config.cpp
@@ -143,7 +143,7 @@ static void VisitComponent(const std::string &Name,
if (Missing && GetComponentLibraryPath) {
std::string path = (*GetComponentLibraryPath)(AC->Library);
if (DirSep == "\\") {
- std::replace(path.begin(), path.end(), '/', '\\');
+ llvm::replace(path, '/', '\\');
}
if (!sys::fs::exists(path))
Missing->push_back(path);
@@ -396,13 +396,12 @@ int main(int argc, char **argv) {
} else {
StaticExt = "lib";
DirSep = "\\";
- std::replace(ActiveObjRoot.begin(), ActiveObjRoot.end(), '/', '\\');
- std::replace(ActivePrefix.begin(), ActivePrefix.end(), '/', '\\');
- std::replace(ActiveBinDir.begin(), ActiveBinDir.end(), '/', '\\');
- std::replace(ActiveLibDir.begin(), ActiveLibDir.end(), '/', '\\');
- std::replace(ActiveCMakeDir.begin(), ActiveCMakeDir.end(), '/', '\\');
- std::replace(ActiveIncludeOption.begin(), ActiveIncludeOption.end(), '/',
- '\\');
+ llvm::replace(ActiveObjRoot, '/', '\\');
+ llvm::replace(ActivePrefix, '/', '\\');
+ llvm::replace(ActiveBinDir, '/', '\\');
+ llvm::replace(ActiveLibDir, '/', '\\');
+ llvm::replace(ActiveCMakeDir, '/', '\\');
+ llvm::replace(ActiveIncludeOption, '/', '\\');
}
SharedDir = ActiveBinDir;
StaticDir = ActiveLibDir;
@@ -438,7 +437,7 @@ int main(int argc, char **argv) {
if (BuiltDyLib) {
std::string path((SharedDir + DirSep + DyLibName).str());
if (DirSep == "\\") {
- std::replace(path.begin(), path.end(), '/', '\\');
+ llvm::replace(path, '/', '\\');
}
DyLibExists = sys::fs::exists(path);
if (!DyLibExists) {
@@ -555,7 +554,7 @@ int main(int argc, char **argv) {
if (AC.Library && !IsInDevelopmentTree) {
std::string path(GetComponentLibraryPath(AC.Library, false));
if (DirSep == "\\") {
- std::replace(path.begin(), path.end(), '/', '\\');
+ llvm::replace(path, '/', '\\');
}
if (DyLibExists && !sys::fs::exists(path)) {
Components =
diff --git a/llvm/unittests/IR/DataLayoutTest.cpp b/llvm/unittests/IR/DataLayoutTest.cpp
index 16a603ff6416f..afa72a53ab2c0 100644
--- a/llvm/unittests/IR/DataLayoutTest.cpp
+++ b/llvm/unittests/IR/DataLayoutTest.cpp
@@ -157,7 +157,7 @@ class DataLayoutPrimitiveSpecificationTest
std::string format(StringRef Str) const {
std::string Res = Str.str();
- std::replace(Res.begin(), Res.end(), '!', Specifier);
+ llvm::replace(Res, '!', Specifier);
return Res;
}
};
diff --git a/llvm/unittests/Support/Path.cpp b/llvm/unittests/Support/Path.cpp
index 187f47d9cfe07..5e0092ddc18ba 100644
--- a/llvm/unittests/Support/Path.cpp
+++ b/llvm/unittests/Support/Path.cpp
@@ -1055,9 +1055,7 @@ TEST_F(FileSystemTest, CreateDir) {
do {
LongPathWithUnixSeparators.append("/DirNameWith19Charss");
} while (LongPathWithUnixSeparators.size() < 260);
- std::replace(LongPathWithUnixSeparators.begin(),
- LongPathWithUnixSeparators.end(),
- '\\', '/');
+ llvm::replace(LongPathWithUnixSeparators, '\\', '/');
ASSERT_NO_ERROR(fs::create_directories(Twine(LongPathWithUnixSeparators)));
// cleanup
ASSERT_NO_ERROR(fs::remove_directories(Twine(TestDirectory) +
@@ -2442,7 +2440,7 @@ TEST_F(FileSystemTest, widenPath) {
EXPECT_EQ(Result, Expected);
// Check that Unix separators are handled correctly.
- std::replace(Input.begin(), Input.end(), '\\', '/');
+ llvm::replace(Input, '\\', '/');
ASSERT_NO_ERROR(windows::widenPath(Input, Result));
EXPECT_EQ(Result, Expected);
>From 91b6aae37f879a04a251210c4672f1e2439307f7 Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Sat, 26 Apr 2025 16:29:31 -0700
Subject: [PATCH 2/2] Address comments.
---
llvm/lib/Support/GraphWriter.cpp | 3 +--
llvm/tools/llvm-config/llvm-config.cpp | 9 +++------
2 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/llvm/lib/Support/GraphWriter.cpp b/llvm/lib/Support/GraphWriter.cpp
index 79ed0e4a487cf..c4a9eea5948c6 100644
--- a/llvm/lib/Support/GraphWriter.cpp
+++ b/llvm/lib/Support/GraphWriter.cpp
@@ -102,9 +102,8 @@ static std::string replaceIllegalFilenameChars(std::string Filename,
std::string IllegalChars =
is_style_windows(sys::path::Style::native) ? "\\/:?\"<>|" : "/";
- for (char IllegalChar : IllegalChars) {
+ for (char IllegalChar : IllegalChars)
llvm::replace(Filename, IllegalChar, ReplacementChar);
- }
return Filename;
}
diff --git a/llvm/tools/llvm-config/llvm-config.cpp b/llvm/tools/llvm-config/llvm-config.cpp
index 27523bdcb6e97..49df8fdcb7f79 100644
--- a/llvm/tools/llvm-config/llvm-config.cpp
+++ b/llvm/tools/llvm-config/llvm-config.cpp
@@ -142,9 +142,8 @@ static void VisitComponent(const std::string &Name,
if (AC->Library) {
if (Missing && GetComponentLibraryPath) {
std::string path = (*GetComponentLibraryPath)(AC->Library);
- if (DirSep == "\\") {
+ if (DirSep == "\\")
llvm::replace(path, '/', '\\');
- }
if (!sys::fs::exists(path))
Missing->push_back(path);
}
@@ -436,9 +435,8 @@ int main(int argc, char **argv) {
if (BuiltDyLib) {
std::string path((SharedDir + DirSep + DyLibName).str());
- if (DirSep == "\\") {
+ if (DirSep == "\\")
llvm::replace(path, '/', '\\');
- }
DyLibExists = sys::fs::exists(path);
if (!DyLibExists) {
// The shared library does not exist: don't error unless the user
@@ -553,9 +551,8 @@ int main(int argc, char **argv) {
Components.push_back(AC.Name);
if (AC.Library && !IsInDevelopmentTree) {
std::string path(GetComponentLibraryPath(AC.Library, false));
- if (DirSep == "\\") {
+ if (DirSep == "\\")
llvm::replace(path, '/', '\\');
- }
if (DyLibExists && !sys::fs::exists(path)) {
Components =
GetAllDyLibComponents(IsInDevelopmentTree, true, DirSep);
More information about the llvm-commits
mailing list