Bugzilla – Bug 130
[vmcore] Symbol table doesn't rename colliding variables during type resolution
Last modified: 2003-11-18 19:07:16
You need to log in before you can comment on or make changes to this bug.
The gccld program dies on the following assertion when linking main.s.bc and libstdc++: Linked in bytecode file '/home/vadve/lattner/local/x86/llvm-gcc/bin/../lib/gcc/i686-pc-linux-gnu/3.4-llvm/../../../libstdc++.so' gccld: /home/vadve/criswell/llvm/lib/VMCore/SymbolTable.cpp:93: void llvm::SymbolTable::remove(llvm::Value*): Assertion `I != end() && "Trying to remove a type that doesn't have a plane yet!"' failed. g++: Internal error: Aborted (program gccld) I'll try to reduce the bytecode file before attaching it.
Created an attachment (id=27) [details] Assembly file that causes assertion This is the small snipper of LLVM assembly, which, when compiled to bytecode and linked to libstdc++, produces an assertion in gccld.
I'm working on this, but unfortunately libstdc++ is very very large. :( Note that this bug is also blocking llvm-llvm. This bug is reproducable with llvm-link, so I'm changing the product/component. -Chris
Happy HAPPY day. I was able to reduce libstdc++ down to: --- target endian = little target pointersize = 32 %struct._Impl = type opaque "struct.std::locale::_Impl" = type { int } %_ZNSt6locale10_S_classicE = global "struct.std::locale::_Impl"* null implementation void %foo(%struct._Impl* %tmp.6) { %tmp.6 = cast %struct._Impl* %tmp.6 to "struct.std::locale::_Impl"* ret void } --- And still be able to reproduce the problem. _THIS_ I can do something with! :) -Chris
Fixed, this was actually a problem in the SymbolTable class. Your testcase now links with libstdc++ as well as my reduced version. Testcase here: test/Regression/Linker/2003-11-18-TypeResolution.ll Patch here: http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20031117/009632.html Description of the problem here: http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20031117/009631.html Maybe llvm-llvm will link better now. :) -Chris