| ! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp | |
| ! Test for issue #169484: Flang should not crash on invalid atomic variables | |
| ! This test verifies that proper diagnostics are emitted for invalid atomic | |
| ! constructs instead of crashing the compiler. | |
| subroutine test_atomic_invalid(a, b, i) | |
| integer :: i, a, b | |
| interface | |
| function baz(i) result(res) | |
| integer :: i, res | |
| end function | |
| end interface | |
| ! Valid atomic update - should work fine | |
| !$omp atomic | |
| b = b + a | |
| ! Invalid: z is undeclared, so z(1) is treated as a function reference | |
| ! This should emit an error, not crash | |
| !$omp atomic | |
| !ERROR: Left-hand side of assignment is not definable | |
| !ERROR: 'z(1_4)' is not a variable or pointer | |
| z(1) = z(1) + 1 | |
| ! Invalid: baz(i) is a function reference, not a variable | |
| ! This should emit an error, not crash | |
| !$omp atomic | |
| !ERROR: Left-hand side of assignment is not definable | |
| !ERROR: 'baz(i)' is not a variable or pointer | |
| !ERROR: This is not a valid ATOMIC UPDATE operation | |
| baz(i) = 1 | |
| end subroutine |