We weren't modifying the lock set when intersecting with one coming
from a break-terminated block. This is inconsistent, since break isn't a
back edge, and it leads to false negatives with scoped locks. We usually
don't warn for those when joining locksets aren't the same, we just
silently remove locks that are not in the intersection. But not warning
and not removing them isn't right.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Unit Tests
Time | Test | |
---|---|---|
2,250 ms | x64 debian > libarcher.races::lock-unrelated.c |
Event Timeline
Comment Actions
LGTM, thank you for explaining the test cases, that helped (and I agree that the drive-by test changes look sensible to me).
This is just a side effect, not the reason I did the change.
It's consistent though with our usual behavior on joining forward edges, see e.g. sls_fun_bad_11.