[LLVMdev] BasicAliasAnalysis: Null pointers do not alias with anything

Dan Gohman gohman at apple.com
Wed Nov 4 16:54:23 PST 2009


Hello,

On Nov 4, 2009, at 1:51 AM, Hans Wennborg wrote:
> 
> 
> / Hans
> Index: lib/Analysis/BasicAliasAnalysis.cpp
> ===================================================================
> --- lib/Analysis/BasicAliasAnalysis.cpp	(revision 86023)
> +++ lib/Analysis/BasicAliasAnalysis.cpp	(working copy)
> @@ -633,6 +633,15 @@
> AliasAnalysis::AliasResult
> BasicAliasAnalysis::aliasCheck(const Value *V1, unsigned V1Size,
>                                const Value *V2, unsigned V2Size) {
> +  // Null pointers do not alias with anything
> +  if (const Constant *C = dyn_cast<Constant>(V1))
> +    if (C->isNullValue())
> +      return NoAlias;
> +
> +  if (const Constant *C = dyn_cast<Constant>(V2))
> +    if (C->isNullValue())
> +      return NoAlias;
> +

As Chris mentioned, for consistency with what the rest of LLVM is doing,
this should check whether the pointers are in the default address space
(0).

Also, this could be generalized by checking the results from 
getUnderlyingObject, since it's not valid to do arithmetic from null to
reach an LLVM identified object either.

Dan




More information about the llvm-dev mailing list