[PATCH] D90529: Allow nonnull/align attribute to accept poison
Johannes Doerfert via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 2 07:21:11 PST 2021
jdoerfert added a comment.
In D90529#2596299 <https://reviews.llvm.org/D90529#2596299>, @aqjune wrote:
> In D90529#2596260 <https://reviews.llvm.org/D90529#2596260>, @jdoerfert wrote:
>
>> In D90529#2596245 <https://reviews.llvm.org/D90529#2596245>, @aqjune wrote:
>>
>>> call void @llvm.assume(true) ["attr1"(p)]
>>> call void @llvm.assume(true) ["attr2"(p)]
>>> =>
>>> call void @llvm.assume(true) ["attr1"(p), "attr2"(p)] ; synergy between attributes may introduce UB
>>>
>>> TBH, making things simple and introducing no special rule seems to be the best practice for avoiding possible miscompilations or glitches in spec I think.
>>> I see that a similar thing is happening in relaxed concurrency and it is really hard to write at least medium-scale program correctly without relying on commonly-used patterns. :(
>>
>> I think I missed your "simple" no-special rule suggestion. Could you repeat that or link it?
>
> My suggestion is to keep the LangRef text of assume bundle as it is, and add nonnull/align to a bundle when creating assume only if it was paired with noundef.
>
> call void @f(nonnull %p) ; => llvm.assume(true) []
> call void @f(nonnull noundef %p) ; => llvm.assume(true) ["nonnull"(%p)]
>
> Well, it is still doing something (the lowering needs to check the existence of noundef), but I think the principle is already applied to the nonnull/align attributes; they can raise UB only if it is paired with noundef, as LangRef says.
I still like this, it seems like a natural next step, let's do that first.
We can revisit the scope discussion and I think will have to because of the GVN example, among other things.
> I'm sorry if it sounded a bit aggressive :(
No worries.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D90529/new/
https://reviews.llvm.org/D90529
More information about the llvm-commits
mailing list