summaryrefslogtreecommitdiffstats
path: root/lib/CodeGen/CodeGenTypes.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2011-07-10 05:39:13 +0000
committerChris Lattner <sabre@nondot.org>2011-07-10 05:39:13 +0000
commit57eb23f34ed2586069273c66f1a9994fe2b42967 (patch)
treec4754d8350e0aebce950aeab9696a70f8e71a89d /lib/CodeGen/CodeGenTypes.h
parent74339dfbfe3fa9c1839ce02e3427e4dc5478a3ae (diff)
keep track of whether being in a RS_StructPointer state
caused us to skip layout out a function accurately. If so, flush the type cache for both the function and struct case to ensure that any pointers to the functions get recomputed. This is overconservative, but with this patch clang can build itself again. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134863 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CodeGenTypes.h')
-rw-r--r--lib/CodeGen/CodeGenTypes.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/CodeGen/CodeGenTypes.h b/lib/CodeGen/CodeGenTypes.h
index 98786007d7..4229c59b83 100644
--- a/lib/CodeGen/CodeGenTypes.h
+++ b/lib/CodeGen/CodeGenTypes.h
@@ -86,7 +86,11 @@ class CodeGenTypes {
RS_Struct, // Recursively inside a struct conversion.
RS_StructPointer // Recursively inside a pointer in a struct.
} RecursionState;
-
+
+ /// SkippedLayout - True if we didn't layout a function bit due to a
+ /// RS_StructPointer RecursionState.
+ bool SkippedLayout;
+
llvm::SmallVector<const RecordDecl *, 8> DeferredRecords;
struct RecursionStatePointerRAII {