[LLVMdev] loads from a null address and optimizations

Andrew Haley aph at redhat.com
Mon Sep 7 02:38:54 PDT 2009


Eli Friedman wrote:
> On Sun, Sep 6, 2009 at 3:53 PM, Kenneth Uildriks<kennethuil at gmail.com> wrote:
>> On Sun, Sep 6, 2009 at 5:32 PM, Eli Friedman<eli.friedman at gmail.com> wrote:
>>> On Sun, Sep 6, 2009 at 3:19 PM, Kenneth Uildriks<kennethuil at gmail.com> wrote:
>>>> It would be unfortunate in a way if "this instruction can trap and go
>>>> there" is taken to mean "if this instruction has no effect other than
>>>> a possible trap, the instruction and the trapping behavior *must* be
>>>> preserved".
>>> What exactly would the semantics be if the instruction *might* trap?
>>> I somehow can't imagine it being useful.
>>>
>>> -Eli
>>>
>> I'm not sure I understand the question.  Instructions that are
>> guaranteed to trap can be optimized into unconditional traps.  So
>> we're talking about instructions that *might* trap in any case.
>>
>> I was saying that if the only possible effect of an instruction is a
>> trap, do we really want optimizers to preserve it in every case?
> 
> Right... the question is, is there any language that actually has such
> semantics?

We faced this problem in gcc, and unfortunately Java and Ada have different
properties when it comes to trapping instructions: Java must throw a
NullPointerException at the appropriate place, but AIUI Ada may or may not.

Andrew.



More information about the llvm-dev mailing list