diff options
author | Chia <sun1011jacobi@gmail.com> | 2023-11-08 00:41:50 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-07 10:41:50 -0500 |
commit | d180cfb37d0d1ae1e9dadd13debc49c80d52eda4 (patch) | |
tree | d332297db74350b02c8ac84ff549cfffd7b04e70 /clang/lib/Sema/SemaOpenMP.cpp | |
parent | ded0d7b964faed4b0af976fd6f6fc82653fc7deb (diff) | |
download | llvm-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.cpp | 7 |
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; |