diff options
author | Jim Laskey <jlaskey@mac.com> | 2006-07-25 23:22:00 +0000 |
---|---|---|
committer | Jim Laskey <jlaskey@mac.com> | 2006-07-25 23:22:00 +0000 |
commit | a25dfd2963070303bc17c7f55bf429a9b0f1d667 (patch) | |
tree | af02b56b43063b71dd83adf59f81be28b2e24513 /lib/VMCore/Type.cpp | |
parent | 9160a6a18fdd091717cc3375bbac604d1949a65c (diff) | |
download | external_llvm-a25dfd2963070303bc17c7f55bf429a9b0f1d667.zip external_llvm-a25dfd2963070303bc17c7f55bf429a9b0f1d667.tar.gz external_llvm-a25dfd2963070303bc17c7f55bf429a9b0f1d667.tar.bz2 |
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.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/VMCore/Type.cpp b/lib/VMCore/Type.cpp index a393556..1fdec94 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 //===----------------------------------------------------------------------===// |