[LLVMbugs] [Bug 1194] bcwriter turns <2 x i10> into <2 x opaque>

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sat Feb 10 06:19:22 PST 2007


rspencer at x10sys.com changed:

           What    |Removed                     |Added
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED

------- Additional Comments From rspencer at x10sys.com  2007-02-10 08:19 -------
This had to do with a combination of things:

1. IntegerType is no longer "primitive"
2. Not all IntegerType instances are inserted early.
3. BCReader in some cases needs IntegerType sub-types to be inserted before 
   (for example) a packed type uses it.
4. Recent slot calculator changes caused non-standard IntegerType instances
   to get slot calculator slots higher than their users.

The above caused a type slot number arrangement that forced the IntegerType
sub-type of a PackedType to have a higher slot number than the PackedType.
Consequently, bcreader created an OpaqueType for the IntegerType and then tried
to instantiate a PackedType with that. The resulting assertion ensued. 

The fix for this is to just make sure that we insert things in a sane order.
This patch:

looks at a type's sub-types and inserts any that cannot recurse back before the
main type is inserted. For example, this type: <2 x i10>*  was previously
inserted like this:

#9:  opaque#10 *
#10: <2 x opaque#11>
#11: i10

Now, it is inserted like this:

#9: i10
#10: <2 x i10>
#11: <2 x i10>*

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

More information about the llvm-bugs mailing list