[LLVMdev] Optimization hints for "constant" loads

Sanjoy Das sanjoy at playingwithpointers.com
Tue Oct 21 11:46:22 PDT 2014


Thank you for the explanation, I think I misunderstood your solution
initially.  Is it accurate to say: by making the definition of the
source pointer of an !invariant load control (or data) dependent on
some initialization event, you can effectively separate the
initialization event (where the location is not invariant) and the
rest of the execution (where the location is invariant).

This approach looks similar to Ruby's "freeze" method:
http://ruby-doc.org/core-2.1.3/Object.html#method-i-freeze

What is the aliasing relationship between a non-invariant load from
the result of a safe_cast and a load from (or store to) the argument
we pass to it?  Is it sensible to make them MustAlias?  I'm trying to
think if a frontend needs to be careful about using the return value
of check_cast only for !invariant loads (or some other restriction),
or is it legal (or desirable) to mix and match both kinds of loads
from both kinds of pointers.

-- Sanjoy



More information about the llvm-dev mailing list