[PATCH] D103958: [WIP] Support MustControl conditional control attribute
Marco Elver via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 9 13:48:38 PDT 2021
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.GI18427@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
More information about the cfe-commits
mailing list