[llvm] r201440 - Add extern template instantiations of llvm::Calculate.

David Blaikie dblaikie at gmail.com
Fri Feb 14 16:40:34 PST 2014


Hopefully fixed by removing the unnecessary 'typename' in r201450.


On Fri, Feb 14, 2014 at 4:34 PM, Lang Hames <lhames at gmail.com> wrote:

> Hi Rafael,
>
> My compiler is warning on this patch: "'typename' occurs outside of a
> template [-W++11-extensions]".
>
> This may need to be reverted until we make the switch to C++11.
>
> Cheers,
> Lang.
>
> On Fri, Feb 14, 2014 at 2:36 PM, Rafael Espindola
> <rafael.espindola at gmail.com> wrote:
> > Author: rafael
> > Date: Fri Feb 14 16:36:16 2014
> > New Revision: 201440
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=201440&view=rev
> > Log:
> > Add extern template instantiations of llvm::Calculate.
> >
> > This should be a small build time improvement in general and fixes
> > the build on OS X with -DBUILD_SHARED_LIBS=ON.
> >
> > The issue is that not all users are including
> GenericDomTreeConstruction.h,
> > causing undefined references when ld64 managed to hide the
> > linkonce_odr symbols.
> >
> > Modified:
> >     llvm/trunk/include/llvm/IR/Dominators.h
> >     llvm/trunk/lib/IR/Dominators.cpp
> >
> > Modified: llvm/trunk/include/llvm/IR/Dominators.h
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Dominators.h?rev=201440&r1=201439&r2=201440&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/include/llvm/IR/Dominators.h (original)
> > +++ llvm/trunk/include/llvm/IR/Dominators.h Fri Feb 14 16:36:16 2014
> > @@ -34,6 +34,17 @@ namespace llvm {
> >  EXTERN_TEMPLATE_INSTANTIATION(class DomTreeNodeBase<BasicBlock>);
> >  EXTERN_TEMPLATE_INSTANTIATION(class DominatorTreeBase<BasicBlock>);
> >
> > +#define LLVM_COMMA ,
> > +EXTERN_TEMPLATE_INSTANTIATION(
> > +    void llvm::Calculate<Function LLVM_COMMA BasicBlock *>(
> > +        DominatorTreeBase<typename GraphTraits<BasicBlock *>::NodeType>
> &DT
> > +            LLVM_COMMA Function &F));
> > +EXTERN_TEMPLATE_INSTANTIATION(void llvm::Calculate<
> > +    Function LLVM_COMMA Inverse<BasicBlock *> >(DominatorTreeBase<
> > +    typename GraphTraits<Inverse<BasicBlock *> >::NodeType> &DT
> LLVM_COMMA
> > +                                                    Function &F));
> > +#undef LLVM_COMMA
> > +
> >  typedef DomTreeNodeBase<BasicBlock> DomTreeNode;
> >
> >  class BasicBlockEdge {
> >
> > Modified: llvm/trunk/lib/IR/Dominators.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Dominators.cpp?rev=201440&r1=201439&r2=201440&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/IR/Dominators.cpp (original)
> > +++ llvm/trunk/lib/IR/Dominators.cpp Fri Feb 14 16:36:16 2014
> > @@ -64,6 +64,16 @@ bool BasicBlockEdge::isSingleEdge() cons
> >  TEMPLATE_INSTANTIATION(class llvm::DomTreeNodeBase<BasicBlock>);
> >  TEMPLATE_INSTANTIATION(class llvm::DominatorTreeBase<BasicBlock>);
> >
> > +#define LLVM_COMMA ,
> > +TEMPLATE_INSTANTIATION(void llvm::Calculate<Function LLVM_COMMA
> BasicBlock *>(
> > +    DominatorTreeBase<typename GraphTraits<BasicBlock *>::NodeType> &DT
> > +        LLVM_COMMA Function &F));
> > +TEMPLATE_INSTANTIATION(void llvm::Calculate<
> > +    Function LLVM_COMMA Inverse<BasicBlock *> >(DominatorTreeBase<
> > +    typename GraphTraits<Inverse<BasicBlock *> >::NodeType> &DT
> LLVM_COMMA
> > +                                                    Function &F));
> > +#undef LLVM_COMMA
> > +
> >  // dominates - Return true if Def dominates a use in User. This performs
> >  // the special checks necessary if Def and User are in the same basic
> block.
> >  // Note that Def doesn't dominate a use in Def itself!
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140214/f75c8a2c/attachment.html>


More information about the llvm-commits mailing list