diff options
author | David Blaikie <dblaikie@gmail.com> | 2021-07-08 13:30:14 -0700 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2021-07-08 13:37:57 -0700 |
commit | 1def2579e10dd84405465f403e8c31acebff0c97 (patch) | |
tree | 8f8965df36c9eadb466cccd78d1a384ebd550cc5 /clang | |
parent | a7992b43a54f89dca7b76cb79d1045acce6dbe1f (diff) | |
download | llvm-1def2579e10dd84405465f403e8c31acebff0c97.zip llvm-1def2579e10dd84405465f403e8c31acebff0c97.tar.gz llvm-1def2579e10dd84405465f403e8c31acebff0c97.tar.bz2 |
PR51018: Remove explicit conversions from SmallString to StringRef to future-proof against C++23
C++23 will make these conversions ambiguous - so fix them to make the
codebase forward-compatible with C++23 (& a follow-up change I've made
will make this ambiguous/invalid even in <C++23 so we don't regress
this & it generally improves the code anyway)
Diffstat (limited to 'clang')
-rw-r--r-- | clang/include/clang/Tooling/DependencyScanning/DependencyScanningFilesystem.h | 2 | ||||
-rw-r--r-- | clang/lib/AST/MicrosoftMangle.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Analysis/MacroExpansionContext.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Basic/FileManager.cpp | 4 | ||||
-rw-r--r-- | clang/lib/CodeGen/MicrosoftCXXABI.cpp | 2 | ||||
-rw-r--r-- | clang/lib/CrossTU/CrossTranslationUnit.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Driver/ToolChains/AMDGPU.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Lex/HeaderSearch.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Lex/PPDirectives.cpp | 2 | ||||
-rw-r--r-- | clang/lib/Sema/SemaStmt.cpp | 6 | ||||
-rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp | 2 | ||||
-rw-r--r-- | clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp | 2 | ||||
-rw-r--r-- | clang/tools/clang-scan-deps/ClangScanDeps.cpp | 4 | ||||
-rw-r--r-- | clang/unittests/Frontend/FrontendActionTest.cpp | 3 |
14 files changed, 18 insertions, 19 deletions
diff --git a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningFilesystem.h b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningFilesystem.h index 7d08813..82dc0b8 100644 --- a/clang/include/clang/Tooling/DependencyScanning/DependencyScanningFilesystem.h +++ b/clang/include/clang/Tooling/DependencyScanning/DependencyScanningFilesystem.h @@ -65,7 +65,7 @@ public: return MaybeStat.getError(); assert(!MaybeStat->isDirectory() && "not a file"); assert(isValid() && "not initialized"); - return StringRef(Contents); + return Contents.str(); } /// \returns The error or the status of the entry. diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp index d3ce9aa..3176077 100644 --- a/clang/lib/AST/MicrosoftMangle.cpp +++ b/clang/lib/AST/MicrosoftMangle.cpp @@ -3676,7 +3676,7 @@ void MicrosoftMangleContextImpl::mangleCXXRTTICompleteObjectLocator( assert(VFTableMangling.startswith("??_7") || VFTableMangling.startswith("??_S")); - Out << "??_R4" << StringRef(VFTableMangling).drop_front(4); + Out << "??_R4" << VFTableMangling.str().drop_front(4); } void MicrosoftMangleContextImpl::mangleSEHFilterExpression( diff --git a/clang/lib/Analysis/MacroExpansionContext.cpp b/clang/lib/Analysis/MacroExpansionContext.cpp index f261ba8..2905106 100644 --- a/clang/lib/Analysis/MacroExpansionContext.cpp +++ b/clang/lib/Analysis/MacroExpansionContext.cpp @@ -111,7 +111,7 @@ MacroExpansionContext::getExpandedText(SourceLocation MacroExpansionLoc) const { return StringRef{""}; // Otherwise we have the actual token sequence as string. - return StringRef{It->getSecond()}; + return It->getSecond().str(); } Optional<StringRef> diff --git a/clang/lib/Basic/FileManager.cpp b/clang/lib/Basic/FileManager.cpp index df306bd..74cd2f2 100644 --- a/clang/lib/Basic/FileManager.cpp +++ b/clang/lib/Basic/FileManager.cpp @@ -611,7 +611,7 @@ StringRef FileManager::getCanonicalName(const DirectoryEntry *Dir) { SmallString<4096> CanonicalNameBuf; if (!FS->getRealPath(Dir->getName(), CanonicalNameBuf)) - CanonicalName = StringRef(CanonicalNameBuf).copy(CanonicalNameStorage); + CanonicalName = CanonicalNameBuf.str().copy(CanonicalNameStorage); CanonicalNames.insert({Dir, CanonicalName}); return CanonicalName; @@ -627,7 +627,7 @@ StringRef FileManager::getCanonicalName(const FileEntry *File) { SmallString<4096> CanonicalNameBuf; if (!FS->getRealPath(File->getName(), CanonicalNameBuf)) - CanonicalName = StringRef(CanonicalNameBuf).copy(CanonicalNameStorage); + CanonicalName = CanonicalNameBuf.str().copy(CanonicalNameStorage); CanonicalNames.insert({File, CanonicalName}); return CanonicalName; diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp index 6bbf077..68f2828 100644 --- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp +++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp @@ -4338,7 +4338,7 @@ llvm::GlobalVariable *MicrosoftCXXABI::getThrowInfo(QualType T) { }; auto *GV = new llvm::GlobalVariable( CGM.getModule(), TIType, /*isConstant=*/true, getLinkageForRTTI(T), - llvm::ConstantStruct::get(TIType, Fields), StringRef(MangledName)); + llvm::ConstantStruct::get(TIType, Fields), MangledName.str()); GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global); GV->setSection(".xdata"); if (GV->isWeakForLinker()) diff --git a/clang/lib/CrossTU/CrossTranslationUnit.cpp b/clang/lib/CrossTU/CrossTranslationUnit.cpp index adee553..0aecad4 100644 --- a/clang/lib/CrossTU/CrossTranslationUnit.cpp +++ b/clang/lib/CrossTU/CrossTranslationUnit.cpp @@ -634,7 +634,7 @@ parseInvocationList(StringRef FileContent, llvm::sys::path::Style PathStyle) { SmallString<32> NativeSourcePath(SourcePath); llvm::sys::path::native(NativeSourcePath, PathStyle); - StringRef InvocationKey(NativeSourcePath); + StringRef InvocationKey = NativeSourcePath; if (InvocationList.find(InvocationKey) != InvocationList.end()) return llvm::make_error<IndexError>( diff --git a/clang/lib/Driver/ToolChains/AMDGPU.cpp b/clang/lib/Driver/ToolChains/AMDGPU.cpp index 2e92be5..0a1da28 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.cpp +++ b/clang/lib/Driver/ToolChains/AMDGPU.cpp @@ -748,7 +748,7 @@ AMDGPUToolChain::detectSystemGPUs(const ArgList &Args, llvm::FileRemover OutputRemover(OutputFile.c_str()); llvm::Optional<llvm::StringRef> Redirects[] = { {""}, - StringRef(OutputFile), + OutputFile.str(), {""}, }; diff --git a/clang/lib/Lex/HeaderSearch.cpp b/clang/lib/Lex/HeaderSearch.cpp index 9970c3c..d5adbcf 100644 --- a/clang/lib/Lex/HeaderSearch.cpp +++ b/clang/lib/Lex/HeaderSearch.cpp @@ -727,7 +727,7 @@ diagnoseFrameworkInclude(DiagnosticsEngine &Diags, SourceLocation IncludeLoc, if (!isAngled && !FoundByHeaderMap) { SmallString<128> NewInclude("<"); if (IsIncludeeInFramework) { - NewInclude += StringRef(ToFramework).drop_back(10); // drop .framework + NewInclude += ToFramework.str().drop_back(10); // drop .framework NewInclude += "/"; } NewInclude += IncludeFilename; diff --git a/clang/lib/Lex/PPDirectives.cpp b/clang/lib/Lex/PPDirectives.cpp index d0e4962..556dd8d 100644 --- a/clang/lib/Lex/PPDirectives.cpp +++ b/clang/lib/Lex/PPDirectives.cpp @@ -1480,7 +1480,7 @@ void Preprocessor::HandleUserDiagnosticDirective(Token &Tok, // Find the first non-whitespace character, so that we can make the // diagnostic more succinct. - StringRef Msg = StringRef(Message).ltrim(' '); + StringRef Msg = Message.str().ltrim(' '); if (isWarning) Diag(Tok, diag::pp_hash_warning) << Msg; diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index 59e64c4..fa798c2 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -1332,12 +1332,12 @@ Sema::ActOnFinishSwitchStmt(SourceLocation SwitchLoc, Stmt *Switch, if (PrevString == CurrString) Diag(CaseVals[i].second->getLHS()->getBeginLoc(), diag::err_duplicate_case) - << (PrevString.empty() ? StringRef(CaseValStr) : PrevString); + << (PrevString.empty() ? CaseValStr.str() : PrevString); else Diag(CaseVals[i].second->getLHS()->getBeginLoc(), diag::err_duplicate_case_differing_expr) - << (PrevString.empty() ? StringRef(CaseValStr) : PrevString) - << (CurrString.empty() ? StringRef(CaseValStr) : CurrString) + << (PrevString.empty() ? CaseValStr.str() : PrevString) + << (CurrString.empty() ? CaseValStr.str() : CurrString) << CaseValStr; Diag(CaseVals[i - 1].second->getLHS()->getBeginLoc(), diff --git a/clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp index adfc2f8..4a9c7ce 100644 --- a/clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp @@ -193,7 +193,7 @@ void DereferenceChecker::reportBug(DerefKind K, ProgramStateRef State, } auto report = std::make_unique<PathSensitiveBugReport>( - *BT, buf.empty() ? BT->getDescription() : StringRef(buf), N); + *BT, buf.empty() ? BT->getDescription() : buf.str(), N); bugreporter::trackExpressionValue(N, bugreporter::getDerefExpr(S), *report); diff --git a/clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp b/clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp index a0e52b1..43f7091 100644 --- a/clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp +++ b/clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp @@ -499,7 +499,7 @@ public: return createFileError(File, EC); OS.write(Contents->data(), Contents->size()); } - return Files.front(); + return Files.front().str(); } private: diff --git a/clang/tools/clang-scan-deps/ClangScanDeps.cpp b/clang/tools/clang-scan-deps/ClangScanDeps.cpp index b653336..74784eb 100644 --- a/clang/tools/clang-scan-deps/ClangScanDeps.cpp +++ b/clang/tools/clang-scan-deps/ClangScanDeps.cpp @@ -83,8 +83,8 @@ public: llvm::FileRemover ErrorRemover(ErrorFile.c_str()); llvm::Optional<StringRef> Redirects[] = { {""}, // Stdin - StringRef(OutputFile), - StringRef(ErrorFile), + OutputFile.str(), + ErrorFile.str(), }; if (const int RC = llvm::sys::ExecuteAndWait( ClangBinaryPath, PrintResourceDirArgs, {}, Redirects)) { diff --git a/clang/unittests/Frontend/FrontendActionTest.cpp b/clang/unittests/Frontend/FrontendActionTest.cpp index bdc0af4..8de687d 100644 --- a/clang/unittests/Frontend/FrontendActionTest.cpp +++ b/clang/unittests/Frontend/FrontendActionTest.cpp @@ -272,8 +272,7 @@ TEST(GeneratePCHFrontendAction, CacheGeneratedPCH) { MemoryBuffer::getMemBuffer("int foo(void) { return 1; }\n").release()); Invocation->getFrontendOpts().Inputs.push_back( FrontendInputFile("test.h", Language::C)); - Invocation->getFrontendOpts().OutputFile = - std::string(StringRef(PCHFilename)); + Invocation->getFrontendOpts().OutputFile = PCHFilename.str().str(); Invocation->getFrontendOpts().ProgramAction = frontend::GeneratePCH; Invocation->getTargetOpts().Triple = "x86_64-apple-darwin19.0.0"; CompilerInstance Compiler; |