aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp
diff options
context:
space:
mode:
authormartinboehme <mboehme@google.com>2024-04-16 08:49:45 +0200
committerGitHub <noreply@github.com>2024-04-16 08:49:45 +0200
commit3c6f91e5b671321c95259dabecdbdfe4a6d69ce1 (patch)
treebf2293383aafae130436db8c4112295686af3f89 /clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp
parente2c91091e537a54f1469610ab407e7c9561e7ffc (diff)
downloadllvm-3c6f91e5b671321c95259dabecdbdfe4a6d69ce1.zip
llvm-3c6f91e5b671321c95259dabecdbdfe4a6d69ce1.tar.gz
llvm-3c6f91e5b671321c95259dabecdbdfe4a6d69ce1.tar.bz2
[clang][dataflow] Fix result object location for builtin `<=>`. (#88726)
The newly added test causes an assertion failure in `PropagateResultObject()` without the fix added here.
Diffstat (limited to 'clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp')
-rw-r--r--clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp b/clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp
index bea15ce..ee25811 100644
--- a/clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp
+++ b/clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp
@@ -508,6 +508,11 @@ public:
isa<CXXStdInitializerListExpr>(E)) {
return;
}
+ if (auto *Op = dyn_cast<BinaryOperator>(E);
+ Op && Op->getOpcode() == BO_Cmp) {
+ // Builtin `<=>` returns a `std::strong_ordering` object.
+ return;
+ }
if (auto *InitList = dyn_cast<InitListExpr>(E)) {
if (!InitList->isSemanticForm())