aboutsummaryrefslogtreecommitdiff
path: root/CodeGen/ModuleBuilder.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-02-06 04:51:19 +0000
committerChris Lattner <sabre@nondot.org>2008-02-06 04:51:19 +0000
commit9eee0f8593fcd2426b043fb0164f87ff36bd213f (patch)
treefd70bf3d9a69202869a3760147a52d66e769585a /CodeGen/ModuleBuilder.cpp
parent3434b08eb700e7e541ca43e9dd4f7b2ecf6ca0cf (diff)
Finish off the refactoring of type handling stuff. Now we recompile every
tag decl after it has been completed git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46798 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'CodeGen/ModuleBuilder.cpp')
-rw-r--r--CodeGen/ModuleBuilder.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/CodeGen/ModuleBuilder.cpp b/CodeGen/ModuleBuilder.cpp
index c59ef447e6..8d3207a19c 100644
--- a/CodeGen/ModuleBuilder.cpp
+++ b/CodeGen/ModuleBuilder.cpp
@@ -71,9 +71,19 @@ namespace {
// FIXME: implement C++ linkage, C linkage works mostly by C
// language reuse already.
} else {
- Builder->EmitType(cast<TypeDecl>(D));
+ assert(isa<TypeDecl>(D) && "Unknown top level decl");
+ // TODO: handle debug info?
}
}
+
+ /// HandleTagDeclDefinition - This callback is invoked each time a TagDecl
+ /// (e.g. struct, union, enum, class) is completed. This allows the client to
+ /// hack on the type, which can occur at any point in the file (because these
+ /// can be defined in declspecs).
+ virtual void HandleTagDeclDefinition(TagDecl *D) {
+ Builder->EmitType(D);
+ }
+
};
}