[PATCH] D131024: Fix assert in the call to isOpenMPRebuildMemberExpr
Jennifer Yu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 2 14:36:46 PDT 2022
jyu2 created this revision.
Herald added subscribers: guansong, yaxunl.
Herald added a project: All.
jyu2 requested review of this revision.
Herald added a reviewer: jdoerfert.
Herald added subscribers: cfe-commits, sstefan1.
Herald added a project: clang.
This is to fix https://github.com/llvm/llvm-project/issues/56884
The problem is in isOpenMPRebuildMemberExpr, it is only need to rebuild
for field expression. No need for member function call.
The fix is to check field for member expression and skip rebuild for member
function call
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D131024
Files:
clang/lib/Sema/SemaOpenMP.cpp
clang/test/OpenMP/parallel_default_messages.cpp
Index: clang/test/OpenMP/parallel_default_messages.cpp
===================================================================
--- clang/test/OpenMP/parallel_default_messages.cpp
+++ clang/test/OpenMP/parallel_default_messages.cpp
@@ -49,3 +49,10 @@
return 0;
}
+
+class A{
+ void a() {
+ #pragma omp parallel
+ a(b); // expected-error {{use of undeclared identifier 'b'}}
+ }
+};
Index: clang/lib/Sema/SemaOpenMP.cpp
===================================================================
--- clang/lib/Sema/SemaOpenMP.cpp
+++ clang/lib/Sema/SemaOpenMP.cpp
@@ -2270,6 +2270,9 @@
}
bool Sema::isOpenMPRebuildMemberExpr(ValueDecl *D) {
+ // Only rebuild for Field.
+ if (!dyn_cast<FieldDecl>(D))
+ return false;
DSAStackTy::DSAVarData DVarPrivate = DSAStack->hasDSA(
D,
[](OpenMPClauseKind C, bool AppliedToPointee,
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D131024.449443.patch
Type: text/x-patch
Size: 846 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220802/6ee14859/attachment.bin>
More information about the cfe-commits
mailing list