melver added a comment.

In D103958#2808967 <https://reviews.llvm.org/D103958#2808967>, @jdoerfert wrote:

>> Please bear with me, I'm updating examples and documentation. I didn't think 
>> anybody would look at this while [WIP]. :-)
>
> People try to help so you have early design feedback ;)

Thank you for that. The LKML discussion got a little heated, so I worry 
slightly that underpresenting the issue will cause a bad first impression.

But while we're here:

There is the consideration to make this a __builtin and not an attribute.

AFAIK a __builtin suffers from the usual problem that the information cannot be 
propagated between TUs:

  file1.c:
    bool foo(void) { return __builtin_mustcontrol(READ_ONCE(...)); }
  
  file2.c:
    void bar(void) { if (foo()) { WRITE_ONCE(...); } }

Or is a language builtin that gives you an error when used in the wrong context 
acceptable? It seems a little odd because I'm unaware of other builtins that do 
that.

GCC devs expressed that GNU attribute syntax may be abused: 
https://lkml.kernel.org/r/20210609171419.gi18...@gate.crashing.org

The attribute is simpler, and hypothetically, if it were to become part of the 
language std we'd have to use [[...]] syntax anyway, so the GNU attribute 
problem seems somewhat artificial to me.

  [[mustcontrol]] if (READ_ONCE(...)) { ... }
  [[mustcontrol]] while (...) { }

Preferences?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103958/new/

https://reviews.llvm.org/D103958

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to