From d0df36a79a599677520d6becad8991e4d6ca1971 Mon Sep 17 00:00:00 2001 From: Alexey Bataev Date: Mon, 30 Apr 2018 18:28:08 +0000 Subject: [PATCH] [OPENMP] Do not emit warning about non-declared target function params. We should not emit warning that the parameters are not marked as declare target, these declaration are local and cannot be marked as declare target. llvm-svn: 331211 --- clang/lib/Sema/SemaOpenMP.cpp | 2 +- clang/test/OpenMP/declare_target_messages.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index 6220e86..896954f 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -12962,7 +12962,7 @@ static void checkDeclInTargetContext(SourceLocation SL, SourceRange SR, if (!LD) LD = D; if (LD && !LD->hasAttr() && - (isa(LD) || isa(LD))) { + ((isa(LD) && !isa(LD)) || isa(LD))) { // Outlined declaration is not declared target. if (LD->isOutOfLine()) { SemaRef.Diag(LD->getLocation(), diag::warn_omp_not_in_target_context); diff --git a/clang/test/OpenMP/declare_target_messages.cpp b/clang/test/OpenMP/declare_target_messages.cpp index 3286a29..72ea33c 100644 --- a/clang/test/OpenMP/declare_target_messages.cpp +++ b/clang/test/OpenMP/declare_target_messages.cpp @@ -88,7 +88,7 @@ int C::method1() { return 0; } -void foo() { +void foo(int p) { a = 0; // expected-error {{threadprivate variables cannot be used in target constructs}} b = 0; // expected-note {{used here}} t = 1; // expected-error {{threadprivate variables cannot be used in target constructs}} @@ -96,7 +96,7 @@ void foo() { VC object1; g = object.method(); g += object.method1(); - g += object1.method(); + g += object1.method() + p; f(); c(); // expected-note {{used here}} } @@ -119,7 +119,7 @@ int main (int argc, char **argv) { #pragma omp declare target // expected-error {{unexpected OpenMP directive '#pragma omp declare target'}} int v; #pragma omp end declare target // expected-error {{unexpected OpenMP directive '#pragma omp end declare target'}} - foo(); + foo(v); return (0); } -- 2.7.4