[llvm-commits] [llvm] r76245 - in /llvm/trunk: include/llvm/Instructions.h include/llvm/Operator.h lib/VMCore/Instructions.cpp

Duncan Sands baldrick at free.fr
Sat Jul 18 00:37:18 PDT 2009


Hi Dan,

> +  /// hasNoPointerOverflow - Return true if this GetElementPtr is known to
> +  /// never have overflow in the pointer addition portions of its effective
> +  /// computation. GetElementPtr computation involves several phases;
> +  /// overflow can be considered to occur in index typecasting, array index
> +  /// scaling, and the addition of the base pointer with offsets. This flag
> +  /// only applies to the last of these. The operands are added to the base
> +  /// pointer one at a time from left to right. This function returns false
> +  /// if any of these additions results in an address value which is not
> +  /// known to be within the allocated address space that the base pointer
> +  /// points into, or within one element (of the original allocation) past
> +  /// the end.

can you please add something explaining that for GEP's for which
overflow results in undefined behaviour (currently always the case),
hasNoPointerOverflow returns true because the undefinedness means
that you are allowed to pretend it never overflows, even if it does.
At least, I suppose that's why you set this to return true always!

Thanks,

Duncan.



More information about the llvm-commits mailing list