[clang] ddf06be - [Clang] Fix clang build with GCC 7.5 (#206768)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 1 04:26:11 PDT 2026
Author: Nikita Kornev
Date: 2026-07-01T13:26:06+02:00
New Revision: ddf06be97fbf9e8b2b6894f1de87de92f67c452d
URL: https://github.com/llvm/llvm-project/commit/ddf06be97fbf9e8b2b6894f1de87de92f67c452d
DIFF: https://github.com/llvm/llvm-project/commit/ddf06be97fbf9e8b2b6894f1de87de92f67c452d.diff
LOG: [Clang] Fix clang build with GCC 7.5 (#206768)
GCC 7.5 rejects two newer C++ idioms:
- LifetimeSafety/FactsGenerator: replace ArrayRef CTAD with an explicit
ArrayRef<const Expr *> to avoid GCC 7's broken brace-init deduction.
- ScalableStaticAnalysisFramework: add explicit std::move() on
unique_ptr<Derived> returns (pre-P1825, GCC 7 won't implicitly move).
No behavior change; restores compatibility with GCC 7.5.
Co-authored-by: Garbowski, Mateusz <mateusz.garbowski at intel.com>
Added:
Modified:
clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp
clang/lib/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowAnalysis.cpp
clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage/UnsafeBufferUsageAnalysis.cpp
Removed:
################################################################################
diff --git a/clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp b/clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp
index 8358c69a5165a..b909b8b568aee 100644
--- a/clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp
+++ b/clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp
@@ -626,7 +626,7 @@ void FactsGenerator::VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *OCE) {
}
}
- ArrayRef Args = {OCE->getArgs(), OCE->getNumArgs()};
+ ArrayRef<const Expr *> Args(OCE->getArgs(), OCE->getNumArgs());
// For `static operator()`, the first argument is the object argument,
// remove it from the argument list to avoid off-by-one errors.
if (OCE->getOperator() == OO_Call && OCE->getDirectCallee()->isStatic())
diff --git a/clang/lib/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowAnalysis.cpp b/clang/lib/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowAnalysis.cpp
index bb68bb4353536..0324c2688047c 100644
--- a/clang/lib/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowAnalysis.cpp
+++ b/clang/lib/ScalableStaticAnalysis/Analyses/PointerFlow/PointerFlowAnalysis.cpp
@@ -91,7 +91,7 @@ Expected<std::unique_ptr<AnalysisResult>> deserializePointerFlowAnalysisResult(
auto Ret = std::make_unique<PointerFlowAnalysisResult>();
Ret->Edges = std::move(Edges);
- return Ret;
+ return std::move(Ret);
}
JSONFormat::AnalysisResultRegistry::Add<PointerFlowAnalysisResult>
diff --git a/clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage/UnsafeBufferUsageAnalysis.cpp b/clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage/UnsafeBufferUsageAnalysis.cpp
index f34645ce8449a..e404eb294ee4b 100644
--- a/clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage/UnsafeBufferUsageAnalysis.cpp
+++ b/clang/lib/ScalableStaticAnalysis/Analyses/UnsafeBufferUsage/UnsafeBufferUsageAnalysis.cpp
@@ -57,7 +57,7 @@ deserializeUnsafeBufferUsageAnalysisResult(
auto Ret = std::make_unique<UnsafeBufferUsageAnalysisResult>();
Ret->UnsafeBuffers = std::move(*UnsafeBuffers);
- return Ret;
+ return std::move(Ret);
}
JSONFormat::AnalysisResultRegistry::Add<UnsafeBufferUsageAnalysisResult>
@@ -116,7 +116,7 @@ deserializeUnsafeBufferReachableAnalysisResult(
auto Ret = std::make_unique<UnsafeBufferReachableAnalysisResult>();
Ret->Reachables = std::move(*Reachables);
- return Ret;
+ return std::move(Ret);
}
JSONFormat::AnalysisResultRegistry::Add<UnsafeBufferReachableAnalysisResult>
More information about the cfe-commits
mailing list