From 412f59b23fc502b199b9ca96c72ef5d5ad21d62b Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Wed, 22 Apr 2009 10:28:39 +0000 Subject: Don't convert interface types (to structs) as part of CodeGenTypes. - This has pros and cons, but for now the pros seem to significantly outway the con. The con is that we will always need to cast in the runtime implementation to a struct type, if we wish to access an interface directly. The pros are: - Avoid the cost of generating types which are used. Most manipulation of Objective-C objects is done through messages, and only the implementation of a class will directly access memory. Previously, we would convert the type even if it only appear as a function parameter, for example. - We don't need to worry about incomplete types, and UpdateCompletedType for interfaces is gone. - It becomes easier to narrow the interface to the shadow struct for Objective-C interfaces (so it can be eliminated). Currently the runtimes still use the CodeGenTypes machinery to generate the LLVM structure they need via ConvertTagDecl, but this can eventually be replaced. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69797 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CodeGenModule.cpp | 4 ---- 1 file changed, 4 deletions(-) (limited to 'lib/CodeGen/CodeGenModule.cpp') diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index ba0b28ac97..0247b693fa 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -1369,11 +1369,7 @@ void CodeGenModule::EmitTopLevelDecl(Decl *D) { case Decl::ObjCClass: case Decl::ObjCForwardProtocol: case Decl::ObjCCategory: - break; case Decl::ObjCInterface: - // If we already laid out this interface due to an @class, and if we - // codegen'd a reference it, update the 'opaque' type to be a real type now. - Types.UpdateCompletedType(cast(D)); break; case Decl::ObjCProtocol: -- cgit v1.2.3-18-g5258