[llvm-bugs] [Bug 46426] New: [OpenMP5.0] Wrong behavior when use array sections in map clauses on target and target data constructs

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Jun 23 01:35:09 PDT 2020


https://bugs.llvm.org/show_bug.cgi?id=46426

            Bug ID: 46426
           Summary: [OpenMP5.0] Wrong behavior when use array sections in
                    map clauses on target and target data constructs
           Product: OpenMP
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Clang Compiler Support
          Assignee: unassignedclangbugs at nondot.org
          Reporter: sulinna at cn.fujitsu.com
                CC: llvm-bugs at lists.llvm.org

In the examples below, clang has opposite behavior when compile:

These examples are from: 
https://www.openmp.org/wp-content/uploads/openmp-examples-5.0.0.pdf
4.4 Array Sections in Device Constructs

According to the examples specification in the above url,
Example_array_sections.1.c should throw error,
Example_array_sections.3.c and,
Example_array_sections.4.c should not throw error,
but clang act opposite when compile, details are as below:


test case:
-----------------------------------
Example_array_sections.1.c
void foo ()
{
   int A[30];
#pragma omp target data map( A[0:4] )
{
   /* Cannot map distinct parts of the same array */
   #pragma omp target map( A[7:20] )
   {
      A[2] = 0;
   }
}
}


Example_array_sections.3.c
void foo ()
{
   int A[30], *p;
#pragma omp target data map( A[0:4] )
{
   p = &A[0];
   #pragma omp target map( p[7:20] )
   {
      A[2] = 0;
      p[8] = 0;
   }
}
}

Example_array_sections.4.c
void foo ()
{
   int A[30], *p;
#pragma omp target data map( A[0:10] )
{
   p = &A[0];
   #pragma omp target map( p[3:7] )
   {
      A[2] = 0;
      p[8] = 0;
      A[8] = 1;
   }
}
}

test command:
------------------
# clang --version
clang version 10.0.0
Target: x86_64-unknown-linux-gnu
Thread model: posix

# clang -fopenmp-version=50 -fopenmp -S Example_array_sections.1.c
# clang -fopenmp-version=50 -fopenmp -S Example_array_sections.3.c
Example_array_sections.3.c:16:7: error: original storage of expression in data
environment is shared but data environment do not fully contain mapped
expression storage
      A[2] = 0;
      ^
Example_array_sections.3.c:11:30: note: used here
#pragma omp target data map( A[0:4] )
                             ^~~~~~
1 error generated.
]# clang -fopenmp-version=50 -fopenmp -S Example_array_sections.4.c
Example_array_sections.4.c:16:7: error: original storage of expression in data
environment is shared but data environment do not fully contain mapped
expression storage
      A[2] = 0;
      ^
Example_array_sections.4.c:11:30: note: used here
#pragma omp target data map( A[0:10] )
                             ^~~~~~~
1 error generated.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200623/876d1e19/attachment.html>


More information about the llvm-bugs mailing list