First Last Prev Next    No search results available
Details
: [vmcore] Symbol table doesn't rename colliding variables ...
Bug#: 130
: libraries
: Core LLVM classes
Status: RESOLVED
Resolution: FIXED
: All
: All
: 1.0
: P2
: normal
: 1.1

:
: compile-fail
:
:
  Show dependency tree - Show dependency graph
People
Reporter: John T. Criswell <criswell@uiuc.edu>
Assigned To: Chris Lattner <clattner@apple.com>

Attachments
Assembly file that causes assertion (171 bytes, text/plain)
2003-11-18 16:38, John T. Criswell
Details


Note

You need to log in before you can comment on or make changes to this bug.

Related actions


Description:   Opened: 2003-11-18 15:51
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.
------- Comment #1 From John T. Criswell 2003-11-18 16:38:04 -------
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.
------- Comment #2 From Chris Lattner 2003-11-18 18:19:14 -------
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
------- Comment #3 From Chris Lattner 2003-11-18 18:39:57 -------
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
------- Comment #4 From Chris Lattner 2003-11-18 19:05:42 -------
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


First Last Prev Next    No search results available