summaryrefslogtreecommitdiff
path: root/lib/VMCore/Type.cpp
diff options
context:
space:
mode:
authorJim Laskey <jlaskey@mac.com>2006-07-25 23:22:00 +0000
committerJim Laskey <jlaskey@mac.com>2006-07-25 23:22:00 +0000
commita25dfd2963070303bc17c7f55bf429a9b0f1d667 (patch)
treeaf02b56b43063b71dd83adf59f81be28b2e24513 /lib/VMCore/Type.cpp
parent9160a6a18fdd091717cc3375bbac604d1949a65c (diff)
downloadllvm-a25dfd2963070303bc17c7f55bf429a9b0f1d667.tar.gz
llvm-a25dfd2963070303bc17c7f55bf429a9b0f1d667.tar.bz2
llvm-a25dfd2963070303bc17c7f55bf429a9b0f1d667.tar.xz
Moving this function to a permanent home to prevent a dependency cycle created
by the inline heuristic. Was preventing llvm-gcc4 from building. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29278 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/Type.cpp')
-rw-r--r--lib/VMCore/Type.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/VMCore/Type.cpp b/lib/VMCore/Type.cpp
index a393556bc6..1fdec943c4 100644
--- a/lib/VMCore/Type.cpp
+++ b/lib/VMCore/Type.cpp
@@ -33,6 +33,25 @@ using namespace llvm;
AbstractTypeUser::~AbstractTypeUser() {}
+
+//===----------------------------------------------------------------------===//
+// Type PATypeHolder Implementation
+//===----------------------------------------------------------------------===//
+
+// This routine was moved here to resolve a cyclic dependency caused by
+// inline heuristics.
+
+/// get - This implements the forwarding part of the union-find algorithm for
+/// abstract types. Before every access to the Type*, we check to see if the
+/// type we are pointing to is forwarding to a new type. If so, we drop our
+/// reference to the type.
+///
+Type* PATypeHolder::get() const {
+ const Type *NewTy = Ty->getForwardedType();
+ if (!NewTy) return const_cast<Type*>(Ty);
+ return *const_cast<PATypeHolder*>(this) = NewTy;
+}
+
//===----------------------------------------------------------------------===//
// Type Class Implementation
//===----------------------------------------------------------------------===//