[LLVMdev] Trouble with rewriting MaximumSpanningTree as template.

Andreas Neustifter
Thu, 03 Sep 2009 13:30:36 -0000

Thanks a lot, that did the trick!

Andi

Sebastian Redl wrote:
> 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
>