fmayer wrote:

> > > With the function effects warnings (as errors) activated, blocking 
> > > functions cannot be called from non-blocking functions, and this is 
> > > enforced at compile time. The purpose of this series of PRs is to 
> > > introduce similar functionality into RealtimeSanitizer, so that it can 
> > > make the equivalent check at run time.
> > 
> > 
> > What is the reason we need to check something again at runtime that was 
> > already checked at compile-time? In case people didn't `-Werror` the 
> > warning?
> 
> Yes indeed - that's one of a few scenarios where we believe this is needed:
> 
> * the user didn't compile with `-Werror`,
> * the user didn't compile with `-Wfunction-effects` (i.e. no checking at 
> compile time happens),
> * the `[[clang::blocking]]` function is called deep within the call stack of 
> a higher-level `[[clang::nonblocking]]` function, or maybe even
> * the `[[clang::blocking]]` function is pre-compiled in a different library 
> to what the user is compiling.
> 
> RTSan differs from the performance constraints attributes in that it only 
> flags violations that happen at run time, in contrast to flagging those that 
> _could_ happen at compile time. In this scenario, if a `[[clang::blocking]]` 
> call exists somewhere in the code within a `[[clang::nonblocking]]` function, 
> rtsan does not consider it a violation until it's called. Depending on the 
> user's needs they may consider this either good or bad - there are pros and 
> cons to it, of course. RTSan takes an "innocent until proven guilty" 
> approach, whereas performance constraints are more pessimistically "guilty 
> until proven innocent" - and we think both are very useful.
> 
> One of the design goals of the works was that these systems should be able to 
> be used easily together, or separately, and that they should have analogous 
> functionalities where possible. Hope that makes some sense!

Thanks for confirming. Optionally mention this somewhere in a comment in the 
code for future reference.

https://github.com/llvm/llvm-project/pull/111055
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to