Skip to content

Commit 8caae75

Browse files
committed
Add help message for -fno-openmp-simd, expand tests
1 parent f8f39f9 commit 8caae75

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

clang/include/clang/Driver/Options.td

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3718,7 +3718,8 @@ def fno_openmp_simd
37183718
: Flag<["-"], "fno-openmp-simd">,
37193719
Group<f_Group>,
37203720
Flags<[NoArgumentUnused]>,
3721-
Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>;
3721+
Visibility<[ClangOption, CC1Option, FlangOption, FC1Option]>,
3722+
HelpText<"Do not emit code for any OpenMP constructs.">;
37223723
def fopenmp_cuda_mode : Flag<["-"], "fopenmp-cuda-mode">, Group<f_Group>,
37233724
Flags<[NoArgumentUnused, HelpHidden]>, Visibility<[ClangOption, CC1Option]>;
37243725
def fno_openmp_cuda_mode : Flag<["-"], "fno-openmp-cuda-mode">, Group<f_Group>,

flang/test/Transforms/OpenMP/simd-only.mlir

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
// Check that simd operations are not removed and rewritten, but all the other OpenMP ops are.
44

5+
// CHECK: omp.private
56
// CHECK-LABEL: func.func @simd
67
omp.private {type = private} @_QFEi_private_i32 : i32
78
func.func @simd(%arg0: i32, %arg1: !fir.ref<i32>, %arg2: !fir.ref<i32>) {
@@ -49,6 +50,7 @@ func.func @simd_composite(%arg0: i32, %arg1: !fir.ref<i32>) {
4950

5051
// -----
5152

53+
// CHECK-NOT: omp.private
5254
// CHECK-LABEL: func.func @parallel
5355
omp.private {type = private} @_QFEi_private_i32 : i32
5456
func.func @parallel(%arg0: i32, %arg1: !fir.ref<i32>) {
@@ -326,6 +328,7 @@ func.func @sections(%funcArg0: i32, %funcArg1: !fir.ref<i32>, %funcArg2: !fir.re
326328

327329
// -----
328330

331+
// CHECK-NOT: omp.declare_reduction
329332
omp.declare_reduction @add_reduction_i32 : i32 init {
330333
^bb0(%arg0: i32):
331334
%c0_i32 = arith.constant 0 : i32
@@ -620,3 +623,24 @@ func.func @do_multi_block(%funcArg0: i32, %funcArg1: !fir.ref<i32>, %6: i1) {
620623
}
621624
return
622625
}
626+
627+
// -----
628+
629+
// CHECK-LABEL: func.func @simd_nested_atomic(
630+
// CHECK-SAME: %[[ARG_0:.*]]: i32, %[[ARG_1:.*]]: !fir.ref<i32>, %[[ARG_2:.*]]: !fir.ref<i32>
631+
func.func @simd_nested_atomic(%arg0: i32, %arg1: !fir.ref<i32>, %arg2: !fir.ref<i32>) {
632+
%c1_i32 = arith.constant 1 : i32
633+
%c100000_i32 = arith.constant 100000 : i32
634+
// CHECK: omp.simd
635+
omp.simd {
636+
// CHECK: omp.loop_nest
637+
omp.loop_nest (%arg3) : i32 = (%c1_i32) to (%c100000_i32) inclusive step (%c1_i32) {
638+
// CHECK-NOT: omp.atomic.write
639+
// CHECK: fir.store %[[ARG_0]] to %[[ARG_2]]
640+
omp.atomic.write %arg2 = %arg0 : !fir.ref<i32>, i32
641+
// CHECK: omp.yield
642+
omp.yield
643+
}
644+
}
645+
return
646+
}

0 commit comments

Comments
 (0)