================
@@ -2500,18 +2500,21 @@ static void 
AddTraitPropertiesFromSelector(llvm::omp::TraitSet set,
       if (!scalarExpr) {
         continue;
       }
+      // Subset checks compare condition identities; distinct conditions must
+      // not share one.
+      llvm::StringRef identity{prop.source.begin(), prop.source.size()};
----------------
MattPD wrote:

Using source text as the identity makes insignificant blanks change selection. 
With `flang -fopenmp -fopenmp-version=52 -S -emit-llvm repro.f90 -o -`, this 
selects TASKYIELD at 82f18330 instead of TASKWAIT at the 
[parent](https://github.com/llvm/llvm-project/commit/6544686b4a86193fc0bf6d229d59df20a4251e7f):

```fortran
subroutine s()
  !$omp metadirective &
  !$omp& when(user={condition(1==1)}: taskyield) &
  !$omp& when(user={condition(1 == 1)}, implementation={vendor(llvm)}: taskwait)
end subroutine
```

Both conditions are the same expression, so the first selector is a strict 
subset of the second. Giving both conditions the same spelling restores 
TASKWAIT at 82f18330. Could the identity come from the parsed expression rather 
than its spelling, with a frontend regression test?

https://github.com/llvm/llvm-project/pull/231668
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to