[llvm-dev] [RFC] A new intrinsic, `llvm.blackbox`, to explicitly prevent constprop, die, etc optimizations

Reid Kleckner via llvm-dev llvm-dev at lists.llvm.org
Wed Nov 11 10:32:10 PST 2015


I think the idea is to model the intrinsic as a normal external function
call:
- Can read/write escaped memory
- Escapes pointer args
- Functionattrs cannot infer anything about it
- Returns a pointer which may alias any escaped data

It's obvious how this works at the IR level, but I'm not sure what would
happen in the backend. If you compile the intrinsic to nothing but a
virtual register copy, MI optimizations will kick in. You might get away
with compiling it to a volatile store/load, and hope that the time for
high-level memory optimizations like GVN is over.

On Mon, Nov 9, 2015 at 8:58 PM, Daniel Berlin <dberlin at dberlin.org> wrote:

>
>
> On Mon, Nov 9, 2015 at 7:46 PM, Reid Kleckner <rnk at google.com> wrote:
>
>> One thing that volatile doesn't do is escape results that have been
>> written to memory.
>>
>>
> Honestly, i'd probably rather see attributes or something than this
> intrinsic.
>
> That said ....
>
>
>
>> The proposed blackbox intrinsic is modeled as reading and writing any
>> pointed to memory, which is useful.
>>
>>
> The proposed intrinsic does not have a really well defined exact set of
> semantics.
> If it did, and those semantics made sense, i think you'd see a lot less
> pushback.
>
>
>> I also think blackbox will be a lot easier for people to use than empty
>> volatile inline asm and volatile loads and stores. That alone seems worth
>> something. :)
>>
>>
> Yes, but at the same time, it seems very "Do What I Mean".
>
> Those kinds of intrinsics rarely turn out to be sane and maintainable ;-)
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151111/a25b3030/attachment.html>


More information about the llvm-dev mailing list