Hi,<br><br>  I don't intentionally want to induce a tramp, the load null is created by an llvm optimization<br>pass from code like:<br>   v = null;<br>   .....<br>   v.Call ();<br><br>            Zoltan<br><br><div class="gmail_quote">
On Sat, Sep 5, 2009 at 11:39 PM, Bill Wendling <span dir="ltr"><<a href="mailto:isanbard@gmail.com">isanbard@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Zoltan,<br>
<br>
We've come across this before where people meant to induce a trap by dereferencing a null. It doesn't work for LLVM (as you found out). Essentially, it's a valid transformation to turn this into unreachable. The better solution is to use something like __builtin_trap.<br>

<br>
-bw<div><div></div><div class="h5"><br>
<br>
On Sep 5, 2009, at 2:19 PM, Zoltan Varga <<a href="mailto:vargaz@gmail.com" target="_blank">vargaz@gmail.com</a>> wrote:<br>
<br>
</div></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="h5">
<br>
                Hi,<br>
<br>
  Currently, llvm treats the loads from a null address as unreachable code, i.e.:<br>
     load i32* null<br>
is transformed by some optimization pass into<br>
    unreachable<br>
<br>
This presents problems in JIT compilers like mono which implement null pointer checks by trapping SIGSEGV signals. It also<br>
looks incorrect since it changes program behavior, which might be undefined in general, but it is quite well defined on unix.<br>
Is there a way to prevent llvm from doing this besides marking all loads as volatile ?<br>
<br>
                          thanks<br>
<br>
                              Zoltan<br>
<br></div></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</blockquote>
</blockquote></div><br>