diff options
author | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2008-01-30 21:21:08 +0000 |
---|---|---|
committer | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2008-01-30 21:21:08 +0000 |
commit | 8df106e16197bf4bc055a9a9d73f4b78351c0c3e (patch) | |
tree | c9c797bfb0080799390a79c356c7dde47eba5d91 /CodeGen/CodeGenTypes.cpp | |
parent | 9d49395a5b94fb6a981739b01366ae37a2753d89 (diff) |
A pointer to an opaque type is an "opaque type definition".
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46575 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'CodeGen/CodeGenTypes.cpp')
-rw-r--r-- | CodeGen/CodeGenTypes.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/CodeGen/CodeGenTypes.cpp b/CodeGen/CodeGenTypes.cpp index 4cced51e25..7c6abc1bec 100644 --- a/CodeGen/CodeGenTypes.cpp +++ b/CodeGen/CodeGenTypes.cpp @@ -94,8 +94,12 @@ CodeGenTypes::~CodeGenTypes() { /// isOpaqueTypeDefinition - Return true if LT is a llvm::OpaqueType /// and T is tag definition. This helper routine does not check /// relationship between T and LT. -static bool isOpaqueTypeDefinition(QualType T, llvm::Type *LT) { - +static bool isOpaqueTypeDefinition(QualType T, const llvm::Type *LT) { + if (T->isPointerType()) { + return + isOpaqueTypeDefinition(cast<PointerType>(*T).getPointeeType(), + cast<llvm::PointerType>(LT)->getElementType()); + } if (!isa<llvm::OpaqueType>(LT)) return false; |