[LLVMdev] loads from a null address and optimizations
isanbard at gmail.com
Sat Sep 5 14:39:17 PDT 2009
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
On Sep 5, 2009, at 2:19 PM, Zoltan Varga <vargaz at gmail.com> wrote:
> Currently, llvm treats the loads from a null address as
> unreachable code, i.e.:
> load i32* null
> is transformed by some optimization pass into
> This presents problems in JIT compilers like mono which implement
> null pointer checks by trapping SIGSEGV signals. It also
> looks incorrect since it changes program behavior, which might be
> undefined in general, but it is quite well defined on unix.
> Is there a way to prevent llvm from doing this besides marking all
> loads as volatile ?
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
More information about the llvm-dev