Skip to content

Conversation

lwshanbd
Copy link
Contributor

@lwshanbd lwshanbd commented Nov 7, 2023

Fix #69198

@llvmbot llvmbot added clang Clang issues not falling into any other category clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:openmp OpenMP related changes to Clang labels Nov 7, 2023
@llvmbot
Copy link
Member

llvmbot commented Nov 7, 2023

@llvm/pr-subscribers-clang

Author: Baodi (lwshanbd)

Changes

Fix #69198


Full diff: https://github.com/llvm/llvm-project/pull/71552.diff

3 Files Affected:

  • (modified) clang/lib/AST/Expr.cpp (+3-3)
  • (modified) clang/lib/Sema/SemaOpenMP.cpp (+2)
  • (added) clang/test/OpenMP/bug69198.c (+8)
diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp
index 74a9c49a795b4fc..55c6b732b7081f4 100644
--- a/clang/lib/AST/Expr.cpp
+++ b/clang/lib/AST/Expr.cpp
@@ -4983,10 +4983,10 @@ QualType OMPArraySectionExpr::getBaseOriginalType(const Expr *Base) {
   for (unsigned Cnt = 0; Cnt < ArraySectionCount; ++Cnt) {
     if (OriginalTy->isAnyPointerType())
       OriginalTy = OriginalTy->getPointeeType();
-    else {
-      assert (OriginalTy->isArrayType());
+    else if (OriginalTy->isArrayType())
       OriginalTy = OriginalTy->castAsArrayTypeUnsafe()->getElementType();
-    }
+    else
+      return {};
   }
   return OriginalTy;
 }
diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp
index e05fa54d8118319..dcdd6e7a3f5c762 100644
--- a/clang/lib/Sema/SemaOpenMP.cpp
+++ b/clang/lib/Sema/SemaOpenMP.cpp
@@ -21014,6 +21014,8 @@ Sema::ActOnOpenMPDependClause(const OMPDependClause::DependDataTy &Data,
           if (OASE) {
             QualType BaseType =
                 OMPArraySectionExpr::getBaseOriginalType(OASE->getBase());
+            if (BaseType.isNull())
+              return nullptr;
             if (const auto *ATy = BaseType->getAsArrayTypeUnsafe())
               ExprTy = ATy->getElementType();
             else
diff --git a/clang/test/OpenMP/bug69198.c b/clang/test/OpenMP/bug69198.c
new file mode 100644
index 000000000000000..ca80d994ea051b0
--- /dev/null
+++ b/clang/test/OpenMP/bug69198.c
@@ -0,0 +1,8 @@
+// RUN: %clang_cc1 -verify -fopenmp -x c -triple x86_64-apple-darwin10 %s
+// expected-no-diagnostics
+
+int c[-1];
+
+void foo (){
+  #pragma omp task depend(inout: c[:][:])
+}

@lwshanbd lwshanbd changed the title Return null expr when a negative array was created. [Clang][OpenMP]Return null expr when a negative array was created. Nov 7, 2023
@lwshanbd lwshanbd changed the title [Clang][OpenMP]Return null expr when a negative array was created. [Clang][OpenMP]Return empty QualType when a negative array was created. Nov 8, 2023
@shiltian shiltian changed the title [Clang][OpenMP]Return empty QualType when a negative array was created. [Clang][OpenMP] Return empty QualType when a negative array was created Nov 8, 2023
@shiltian
Copy link
Contributor

shiltian commented Nov 9, 2023

The changes look good to me. @alexey-bataev WDYT?

@shiltian shiltian merged commit df2725f into llvm:main Nov 10, 2023
zahiraam pushed a commit to zahiraam/llvm-project that referenced this pull request Nov 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:frontend Language frontend issues, e.g. anything involving "Sema" clang:openmp OpenMP related changes to Clang clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Clang][OpenMP] Assertion `OriginalTy->isArrayType()' failed.
4 participants