[PATCH] D109321: [clang][OpenMP] Fix the bug in codegen for ordered directive

Roman Lebedev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 6 06:33:32 PDT 2021


lebedev.ri requested changes to this revision.
lebedev.ri added a comment.
This revision now requires changes to proceed.

In D109321#2985244 <https://reviews.llvm.org/D109321#2985244>, @peixin wrote:

> The following test case fails after https://reviews.llvm.org/rGaf000197c4214926bd7d0862d86f89aed5f20da6.
>
>   #include <iostream>
>   using namespace std;
>   
>   int main() {
>     float a[10];
>     int i, N = 10;
>     for (i = 0; i < N; i++)
>       a[i] = 0;
>   
>     #pragma omp simd
>     for (i = 0; i < N; i++) {
>       #pragma omp ordered simd
>       a[i] = a[i-1] + 1.0;
>     }
>   
>     for (i = 0; i < N; i++)
>       cout << a[i] << "  ";
>     cout << endl;
>   }
>
>
>
>   $ clang++ -fopenmp simd.cpp && ./a.out
>   1  2  3  4  5  6  7  8  9  10
>   $ clang++ -fopenmp -O1 simd.cpp && ./a.out
>   1  1  1  1  2  1  1  1  2  3
>
> It is fixed by this patch.

That's UB; https://godbolt.org/z/5nb61G3vY

  /app/example.cpp:13:12: runtime error: index -1 out of bounds for type 'float [10]'
  SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /app/example.cpp:13:12 in 
  1  2  3  4  5  6  7  8  9  10  

Do you have an example that is miscompiled and doesn't contain UB?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109321/new/

https://reviews.llvm.org/D109321



More information about the cfe-commits mailing list