aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaOpenMP.cpp
diff options
context:
space:
mode:
authorChia <sun1011jacobi@gmail.com>2023-11-08 00:41:50 +0900
committerGitHub <noreply@github.com>2023-11-07 10:41:50 -0500
commitd180cfb37d0d1ae1e9dadd13debc49c80d52eda4 (patch)
treed332297db74350b02c8ac84ff549cfffd7b04e70 /clang/lib/Sema/SemaOpenMP.cpp
parentded0d7b964faed4b0af976fd6f6fc82653fc7deb (diff)
downloadllvm-d180cfb37d0d1ae1e9dadd13debc49c80d52eda4.zip
llvm-d180cfb37d0d1ae1e9dadd13debc49c80d52eda4.tar.gz
llvm-d180cfb37d0d1ae1e9dadd13debc49c80d52eda4.tar.bz2
[Clang][OpenMP] fixed crash due to invalid binary expression in checking atomic semantics (#71480)
This PR fixes https://github.com/llvm/llvm-project/issues/69069 .
Diffstat (limited to 'clang/lib/Sema/SemaOpenMP.cpp')
-rw-r--r--clang/lib/Sema/SemaOpenMP.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp
index 1bd34f7..e05fa54 100644
--- a/clang/lib/Sema/SemaOpenMP.cpp
+++ b/clang/lib/Sema/SemaOpenMP.cpp
@@ -11605,6 +11605,9 @@ class OpenMPAtomicUpdateChecker {
/// RHS binary operation does not have reference to the updated LHS
/// part.
NotAnUpdateExpression,
+ /// An expression contains semantical error not related to
+ /// 'omp atomic [update]'
+ NotAValidExpression,
/// No errors is found.
NoError
};
@@ -11782,6 +11785,10 @@ bool OpenMPAtomicUpdateChecker::checkStatement(Stmt *S, unsigned DiagId,
ErrorFound = NotABinaryOrUnaryExpression;
NoteLoc = ErrorLoc = AtomicBody->getExprLoc();
NoteRange = ErrorRange = AtomicBody->getSourceRange();
+ } else if (AtomicBody->containsErrors()) {
+ ErrorFound = NotAValidExpression;
+ NoteLoc = ErrorLoc = AtomicBody->getExprLoc();
+ NoteRange = ErrorRange = AtomicBody->getSourceRange();
}
} else {
ErrorFound = NotAScalarType;