Replace the PointerLikeTypeTraits::getNumLowBitsAvailable
authorChris Lattner <sabre@nondot.org>
Sun, 29 Mar 2009 04:32:37 +0000 (04:32 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 29 Mar 2009 04:32:37 +0000 (04:32 +0000)
commite30173ac3396510bd0bb26a66fd615ff9083436d
treed71f62634bc8d263495a1672c22f32f7611fca73
parent8ee1b5e916249d1a64ad8cf99b08a0e160f9d052
Replace the PointerLikeTypeTraits::getNumLowBitsAvailable
function with a new NumLowBitsAvailable enum, which makes the
value available as an integer constant expression.

Add PointerLikeTypeTraits specializations for Instruction* and
Use** since they are only guaranteed 4-byte aligned.

Enhance PointerIntPair to know about (and enforce) the alignment
specified by PointerLikeTypeTraits.  This should allow things
like PointerIntPair<PointerIntPair<void*, 1,bool>, 1, bool>
because the inner one knows that 2 low bits are free.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67979 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/ADT/PointerIntPair.h
include/llvm/Instruction.h
include/llvm/Support/PointerLikeTypeTraits.h
include/llvm/Use.h