Author: Haojian Wu Date: 2020-05-19T15:09:26+02:00 New Revision: 23954318f49f1b96cb5c4b76921bea4f7ac0d5f3
URL: https://github.com/llvm/llvm-project/commit/23954318f49f1b96cb5c4b76921bea4f7ac0d5f3 DIFF: https://github.com/llvm/llvm-project/commit/23954318f49f1b96cb5c4b76921bea4f7ac0d5f3.diff LOG: [AST][RecoveryExpr] Fix an assertion crash on openMP. Summary: With recovery expr, it is possible that we have a value-dependent expr within non-dependent context. Reviewers: sammccall, jdoerfert Subscribers: yaxunl, guansong, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D80200 Added: clang/test/OpenMP/recovery-crash.cpp Modified: clang/lib/Sema/SemaOpenMP.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index b62fb26f8b49..e556969a786a 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -6896,8 +6896,8 @@ bool OpenMPIterationSpaceChecker::checkAndSetInc(Expr *S) { static ExprResult tryBuildCapture(Sema &SemaRef, Expr *Capture, llvm::MapVector<const Expr *, DeclRefExpr *> &Captures) { - if (SemaRef.CurContext->isDependentContext()) - return ExprResult(Capture); + if (SemaRef.CurContext->isDependentContext() || Capture->containsErrors()) + return Capture; if (Capture->isEvaluatable(SemaRef.Context, Expr::SE_AllowSideEffects)) return SemaRef.PerformImplicitConversion( Capture->IgnoreImpCasts(), Capture->getType(), Sema::AA_Converting, diff --git a/clang/test/OpenMP/recovery-crash.cpp b/clang/test/OpenMP/recovery-crash.cpp new file mode 100644 index 000000000000..709218ae4678 --- /dev/null +++ b/clang/test/OpenMP/recovery-crash.cpp @@ -0,0 +1,5 @@ +// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=50 -frecovery-ast %s + +void foo(int i) { +#pragma omp target update from(i) device(undef()) // expected-error {{use of undeclared identifier 'undef'}} +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits