[flang] [clang] [llvm] [Flang][WIP/RFC] Enable TSan for Flang (PR #74643)
Andrzej WarzyĆski via cfe-commits
cfe-commits at lists.llvm.org
Sun Dec 10 04:44:09 PST 2023
banach-space wrote:
Hi @jprotze , thank you for working on this!
One thing that would be very nice to see are tests :) It would really help if we could see how to use and how to test this. Any chance for an end-to-end PoC or a demonstrator? @kiranchandramohan , would an e2e test with OpenMP enabled make sense to exercise this?
> Is it the right place to run the ThreadSanitizer pass?
These are uncharted waters for me, but it looks like in Clang the sanitizers are added [before default optimisation pipleines are built](https://github.com/llvm/llvm-project/blob/435ba72afda756183a1ddc7a3a160152ad630951/clang/lib/CodeGen/BackendUtil.cpp#L1006). I would make sure that Flang does the same or justify the rationale for any divergence. As far as the Flang driver is concerned, I think that you have correctly identified the most suitable place. I would probably extract the "sanitzer" logic into a dedicated hook, but that's an implementation detail for later.
> We see different options for an actual solution:
> run a separate pass before the TSan pass that adds the attribute to all functions while considering the blacklist
How does Clang decide when to add such attributes? Why not replicate that logic? Also, if you are looking for a somewhat relevant/similar pass in Flang, check `VScaleAttrPass`: https://github.com/llvm/llvm-project/blob/435ba72afda756183a1ddc7a3a160152ad630951/flang/lib/Optimizer/Transforms/VScaleAttr.cpp#L61-L79
https://github.com/llvm/llvm-project/pull/74643
More information about the cfe-commits
mailing list