diff options
-rw-r--r-- | docs/ReleaseNotes.html | 5 | ||||
-rw-r--r-- | include/llvm/Use.h | 24 |
2 files changed, 5 insertions, 24 deletions
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index 61aca32610..01a39a7ce0 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -318,6 +318,11 @@ expose new optimization opportunities:</p> To be portable across releases, resort to <tt>CallSite</tt> and the high-level accessors, such as <tt>getCalledValue</tt> and <tt>setUnwindDest</tt>. </li> +<li> + You can no longer pass use_iterators directly to cast<> (and similar), because + these routines tend to perform costly dereference operations more than once. You + have to dereference the iterators yourself and pass them in. +</li> </ul> diff --git a/include/llvm/Use.h b/include/llvm/Use.h index 2759338f42..e1ebc6a51b 100644 --- a/include/llvm/Use.h +++ b/include/llvm/Use.h @@ -210,30 +210,6 @@ public: unsigned getOperandNo() const; }; - -template<> struct simplify_type<value_use_iterator<User> > { - typedef User* SimpleType; - - static SimpleType getSimplifiedValue(const value_use_iterator<User> &Val) { - return *Val; - } -}; - -template<> struct simplify_type<const value_use_iterator<User> > - : public simplify_type<value_use_iterator<User> > {}; - -template<> struct simplify_type<value_use_iterator<const User> > { - typedef const User* SimpleType; - - static SimpleType getSimplifiedValue(const - value_use_iterator<const User> &Val) { - return *Val; - } -}; - -template<> struct simplify_type<const value_use_iterator<const User> > - : public simplify_type<value_use_iterator<const User> > {}; - } // End llvm namespace #endif |