aaronpuchert added a comment. It seems @phosek was able to fix the issue in https://github.com/flutter/engine/pull/5944. By the way, a nice way to think about the attributes is that they encode state transitions as shown in the following table. This change fills the remaining two gaps.
| | unlocked | locked exclusive | locked shared | | unlocked/unknown | `EXCLUDES` | `ACQUIRE` | `ACQUIRE_SHARED` | | locked exclusive | `RELEASE` | `REQUIRES` | | | locked shared | `RELEASE_SHARED` | | `REQUIRES_SHARED` | | If more people stumble into the issue, another approach would be possible. My understanding is that the order of attributes is preserved. So we could treat `ACQUIRE(m) RELEASE(m)` = `EXCLUDES(m)` differently than `RELEASE(m) ACQUIRE(m)` = `REQUIRES(m)`. But I'm not sure if that's desirable, since normally the order of attributes does not matter. Repository: rC Clang https://reviews.llvm.org/D49355 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits