diff --git a/include/clang/AST/Decl.h b/include/clang/AST/Decl.h
index a5c3ea0..a35638f 100644
--- a/include/clang/AST/Decl.h
+++ b/include/clang/AST/Decl.h
@@ -437,7 +437,7 @@
     return First->PreviousDeclaration.getPointer();
   }
 
-  virtual Decl *getPrimaryDecl() const;
+  virtual VarDecl *getCanonicalDecl();
 
   /// \brief Iterates through all the redeclarations of the same var decl.
   class redecl_iterator {
@@ -908,7 +908,7 @@
 
   void setPreviousDeclaration(FunctionDecl * PrevDecl);
 
-  virtual Decl *getPrimaryDecl() const;
+  virtual FunctionDecl *getCanonicalDecl();
 
   /// \brief Iterates through all the redeclarations of the same function decl.
   class redecl_iterator {
@@ -1316,6 +1316,8 @@
   void setRBraceLoc(SourceLocation L) { RBraceLoc = L; }
 
   virtual SourceRange getSourceRange() const;
+  
+  virtual TagDecl* getCanonicalDecl();
 
   /// isDefinition - Return true if this decl has its body specified.
   bool isDefinition() const {
diff --git a/include/clang/AST/DeclBase.h b/include/clang/AST/DeclBase.h
index 2d056c4..5350706 100644
--- a/include/clang/AST/DeclBase.h
+++ b/include/clang/AST/DeclBase.h
@@ -312,12 +312,14 @@
   // be defined inside or outside a function etc).
   bool isDefinedOutsideFunctionOrMethod() const;
 
-  /// \brief When there are multiple re-declarations (e.g. for functions),
-  /// this will return the primary one which all of them point to.
-  virtual Decl *getPrimaryDecl() const { return const_cast<Decl*>(this); }
+  /// \brief Retrieves the "canonical" declaration of the given declaration.
+  virtual Decl *getCanonicalDecl() { return this; }
+  const Decl *getCanonicalDecl() const {
+    return const_cast<Decl*>(this)->getCanonicalDecl();
+  }
 
   /// \brief Whether this particular Decl is a primary one.
-  bool isPrimaryDecl() const { return getPrimaryDecl() == this; }
+  bool isCanonicalDecl() const { return getCanonicalDecl() == this; }
 
   /// getBody - If this Decl represents a declaration for a body of code,
   ///  such as a function or method definition, this method returns the
diff --git a/include/clang/AST/DeclTemplate.h b/include/clang/AST/DeclTemplate.h
index 5d0fe15..8601620 100644
--- a/include/clang/AST/DeclTemplate.h
+++ b/include/clang/AST/DeclTemplate.h
@@ -604,6 +604,8 @@
       CommonOrPrev = Prev;
   }
   
+  virtual FunctionTemplateDecl *getCanonicalDecl();
+  
   /// Create a template function node.
   static FunctionTemplateDecl *Create(ASTContext &C, DeclContext *DC,
                                       SourceLocation L,
@@ -1027,6 +1029,8 @@
   ClassTemplateDecl *getPreviousDeclaration() const {
     return PreviousDeclaration;
   }
+  
+  virtual ClassTemplateDecl *getCanonicalDecl();
 
   /// Create a class template node.
   static ClassTemplateDecl *Create(ASTContext &C, DeclContext *DC,
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
index b43aadb..f680606 100644
--- a/lib/AST/ASTContext.cpp
+++ b/lib/AST/ASTContext.cpp
@@ -2085,38 +2085,7 @@
 Decl *ASTContext::getCanonicalDecl(Decl *D) {
   if (!D)
     return 0;
-
-  if (TagDecl *Tag = dyn_cast<TagDecl>(D)) {
-    QualType T = getTagDeclType(Tag);
-    return cast<TagDecl>(cast<TagType>(T.getTypePtr()->CanonicalType)
-                         ->getDecl());
-  }
-
-  if (ClassTemplateDecl *Template = dyn_cast<ClassTemplateDecl>(D)) {
-    while (Template->getPreviousDeclaration())
-      Template = Template->getPreviousDeclaration();
-    return Template;
-  }
-
-  if (const FunctionDecl *Function = dyn_cast<FunctionDecl>(D)) {
-    while (Function->getPreviousDeclaration())
-      Function = Function->getPreviousDeclaration();
-    return const_cast<FunctionDecl *>(Function);
-  }
-
-  if (FunctionTemplateDecl *FunTmpl = dyn_cast<FunctionTemplateDecl>(D)) {
-    while (FunTmpl->getPreviousDeclaration())
-      FunTmpl = FunTmpl->getPreviousDeclaration();
-    return FunTmpl;
-  }
-  
-  if (const VarDecl *Var = dyn_cast<VarDecl>(D)) {
-    while (Var->getPreviousDeclaration())
-      Var = Var->getPreviousDeclaration();
-    return const_cast<VarDecl *>(Var);
-  }
-
-  return D;
+  return D->getCanonicalDecl();
 }
 
 TemplateName ASTContext::getCanonicalTemplateName(TemplateName Name) {
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp
index 728724f..0a6f28d 100644
--- a/lib/AST/Decl.cpp
+++ b/lib/AST/Decl.cpp
@@ -387,8 +387,11 @@
   return First;
 }
 
-Decl *VarDecl::getPrimaryDecl() const {
-  return const_cast<VarDecl *>(getFirstDeclaration());
+VarDecl *VarDecl::getCanonicalDecl() {
+  VarDecl *Var = this;
+  while (Var->getPreviousDeclaration())
+    Var = Var->getPreviousDeclaration();
+  return Var;
 }
 
 //===----------------------------------------------------------------------===//
@@ -621,8 +624,11 @@
   return First;
 }
 
-Decl *FunctionDecl::getPrimaryDecl() const {
-  return const_cast<FunctionDecl *>(getFirstDeclaration());
+FunctionDecl *FunctionDecl::getCanonicalDecl() {
+  FunctionDecl *FD = this;
+  while (FD->getPreviousDeclaration())
+    FD = FD->getPreviousDeclaration();
+  return FD;
 }
 
 /// getOverloadedOperator - Which C++ overloaded operator this
@@ -703,6 +709,14 @@
   return SourceRange(getLocation(), E);
 }
 
+TagDecl* TagDecl::getCanonicalDecl() {
+  Type *T = getTypeForDecl();
+  if (T == 0)
+    T = getASTContext().getTagDeclType(this).getTypePtr();
+
+  return cast<TagDecl>(cast<TagType>(T->getCanonicalTypeInternal())->getDecl());
+}
+
 void TagDecl::startDefinition() {
   TagType *TagT = const_cast<TagType *>(TypeForDecl->getAsTagType());
   TagT->decl.setPointer(this);
diff --git a/lib/AST/DeclTemplate.cpp b/lib/AST/DeclTemplate.cpp
index f1bd1b6..e096e41 100644
--- a/lib/AST/DeclTemplate.cpp
+++ b/lib/AST/DeclTemplate.cpp
@@ -98,6 +98,13 @@
   Decl::Destroy(C);
 }
 
+FunctionTemplateDecl *FunctionTemplateDecl::getCanonicalDecl() {
+  FunctionTemplateDecl *FunTmpl = this;
+  while (FunTmpl->getPreviousDeclaration())
+    FunTmpl = FunTmpl->getPreviousDeclaration();
+  return FunTmpl;
+}
+
 FunctionTemplateDecl::Common *FunctionTemplateDecl::getCommonPtr() {
   // Find the first declaration of this function template.
   FunctionTemplateDecl *First = this;
@@ -115,6 +122,13 @@
 // ClassTemplateDecl Implementation
 //===----------------------------------------------------------------------===//
 
+ClassTemplateDecl *ClassTemplateDecl::getCanonicalDecl() {
+  ClassTemplateDecl *Template = this;
+  while (Template->getPreviousDeclaration())
+    Template = Template->getPreviousDeclaration();
+  return Template;
+}
+
 ClassTemplateDecl *ClassTemplateDecl::Create(ASTContext &C,
                                              DeclContext *DC,
                                              SourceLocation L,
diff --git a/lib/Index/DeclReferenceMap.cpp b/lib/Index/DeclReferenceMap.cpp
index 3ec8794..2e5e7c3 100644
--- a/lib/Index/DeclReferenceMap.cpp
+++ b/lib/Index/DeclReferenceMap.cpp
@@ -66,12 +66,12 @@
 }
 
 void StmtMapper::VisitDeclRefExpr(DeclRefExpr *Node) {
-  NamedDecl *PrimD = cast<NamedDecl>(Node->getDecl()->getPrimaryDecl());
+  NamedDecl *PrimD = cast<NamedDecl>(Node->getDecl()->getCanonicalDecl());
   Map.insert(std::make_pair(PrimD, ASTLocation(Parent, Node)));
 }
 
 void StmtMapper::VisitMemberExpr(MemberExpr *Node) {
-  NamedDecl *PrimD = cast<NamedDecl>(Node->getMemberDecl()->getPrimaryDecl());
+  NamedDecl *PrimD = cast<NamedDecl>(Node->getMemberDecl()->getCanonicalDecl());
   Map.insert(std::make_pair(PrimD, ASTLocation(Parent, Node)));
 }
 
@@ -122,17 +122,17 @@
 
 DeclReferenceMap::astlocation_iterator
 DeclReferenceMap::refs_begin(NamedDecl *D) const {
-  NamedDecl *Prim = cast<NamedDecl>(D->getPrimaryDecl());
+  NamedDecl *Prim = cast<NamedDecl>(D->getCanonicalDecl());
   return astlocation_iterator(Map.lower_bound(Prim));  
 }
 
 DeclReferenceMap::astlocation_iterator
 DeclReferenceMap::refs_end(NamedDecl *D) const {
-  NamedDecl *Prim = cast<NamedDecl>(D->getPrimaryDecl());
+  NamedDecl *Prim = cast<NamedDecl>(D->getCanonicalDecl());
   return astlocation_iterator(Map.upper_bound(Prim));  
 }
 
 bool DeclReferenceMap::refs_empty(NamedDecl *D) const {
-  NamedDecl *Prim = cast<NamedDecl>(D->getPrimaryDecl());
+  NamedDecl *Prim = cast<NamedDecl>(D->getCanonicalDecl());
   return refs_begin(Prim) == refs_end(Prim);  
 }
