Skip to content
  • Chris Lattner's avatar
    Introduce a new OpaquePtr<N> struct type, which is a simple POD wrapper for a · 83f095cc
    Chris Lattner authored
    pointer.  Its purpose in life is to be a glorified void*, but which does not
    implicitly convert to void* or other OpaquePtr's with a different UID.
    
    Introduce Action::DeclPtrTy which is a typedef for OpaquePtr<0>.  Change the 
    entire parser/sema interface to use DeclPtrTy instead of DeclTy*.  This
    makes the C++ compiler enforce that these aren't convertible to other opaque
    types.
    
    We should also convert ExprTy, StmtTy, TypeTy, AttrTy, BaseTy, etc,
    but I don't plan to do that in the short term.
    
    The one outstanding known problem with this patch is that we lose the 
    bitmangling optimization where ActionResult<DeclPtrTy> doesn't know how to
    bitmangle the success bit into the low bit of DeclPtrTy.  I will rectify
    this with a subsequent patch.
    
    llvm-svn: 67952
    83f095cc
Loading