rewrite some of the type refinement code to eliminate dangling pointers
simplify the code and generally make it more robust.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46745 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/CodeGen/CodeGenModule.h b/CodeGen/CodeGenModule.h
index 87b9e9c..5135c1b 100644
--- a/CodeGen/CodeGenModule.h
+++ b/CodeGen/CodeGenModule.h
@@ -34,6 +34,7 @@
   class Stmt;
   class ValueDecl;
   class VarDecl;
+  class TypeDecl;
   class FileVarDecl;
   struct LangOptions;
   class Diagnostic;
@@ -87,6 +88,7 @@
   void EmitFunction(const FunctionDecl *FD);
   void EmitGlobalVar(const FileVarDecl *D);
   void EmitGlobalVarDeclarator(const FileVarDecl *D);
+  void EmitType(const TypeDecl *D);
   llvm::Constant *EmitGlobalInit(const Expr *E);
   llvm::Constant *EmitConstantExpr(const Expr *E);