[LLVMdev] Should remove calling NULL pointer or not

John Criswell criswell at illinois.edu
Wed Nov 6 18:28:04 PST 2013


On 11/6/13 6:36 PM, Yin Ma wrote:
>
> Hi,
>
> For a small case, that calls NULL pointer function. LLVM explicitly 
> converts
>
> It to a store because it thinks it is not reachable like calling 
> undefvalue.
>
> In InstCombineCalls.cpp:930
>
> I think it is not a right approach because calling null pointer function
>
> Will segfault the program. Converting to a store will make program pass
>
> Silently. This changes the behavior of a program.
>
> So we need remove the case if (isa<ConstantPointerNull>(Callee) at
>
> InstCombineCalls.cpp:918 and treat calling Null pointer reachable.
>
> How do you think? Is there any reason that we should convert
>
> a calling null pointer to a store?
>

If calling a NULL function pointer yields undefined behavior (as defined 
by the C/C++ standards), then the optimization is correct: since the 
behavior is undefined, the compiler can change it as it sees fits.  In 
other words, the compiler is not required to maintain "incorrect" behavior.

The remaining question, then, is whether the C/C++ standards consider 
calling a NULL function pointer undefined behavior.  I suspect that it 
is undefined behavior, but to be honest, I do not know for certain.

-- John T.



> Thanks,
>
> Yin
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131106/2bd623d9/attachment.html>


More information about the llvm-dev mailing list