Hello Bhargava,
Pointers to Decl are unique in the translation unit since Decls are part of ASTContext (and are created with its allocator) and each Decl belongs to only one ASTContext. However, I don't think it is a good idea to use them as GDM keys. The reason for using tags is a need to distinguish data that belong to different checkers. A static variable (which is checker-private) identifies a checker uniquely, but a 'Decl *' doesn't since multiple checkers may use it as a key.