[LLVMdev] Trouble with rewriting MaximumSpanningTree as template.

Sebastian Redl
Thu, 03 Sep 2009 11:43:28 -0000

Andreas Neustifter wrote:
> $> .../lib/Transforms/Instrumentation/MaximumSpanningTree.cpp:38: error:
> 'stable_sort' is not a member of 'std'
>
> which I find kind of curious since std::stable_sort didn't make a
> problem in the specific implementation.
>
I don't see anything that definitely pulls <algorithm> in, so it may
be
a case of one implementation happening to do it, and the other
not.
> This problem aside I get the error
>
> $> llvm[2]: Linking Debug executable opt
> $>
>
.../llvm-svn-debug-obj/Debug/lib/libLLVMInstrumentation.a(OptimalEdgeProfiling.o):
> In function `(anonymous
> namespace)::OptimalEdgeProfiler::runOnModule(llvm::Module&)':
> $>
>
.../llvm/llvm-svn/lib/Transforms/Instrumentation/OptimalEdgeProfiling.cpp:135:
> undefined reference to `llvm::MaximumSpanningTree<llvm::BasicBlock
>
const*>::MaximumSpanningTree(std::vector<std::pair<std::pair<llvm::BasicBlock
> const*, llvm::BasicBlock const*>, double>,
> std::allocator<std::pair<std::pair<llvm::BasicBlock const*,
> llvm::BasicBlock const*>, double> > >&)'
> $> collect2: ld returned 1 exit status
>
> when linking this stuff together.
>
You can't define templates in .cpp files; they must be available for
instantiation in each source file.

Sebastian