[LLVMdev] Can't bootstrap llvm-gcc-4.0 for x84_64

David Greene dag at cray.com
Thu Oct 11 09:24:30 PDT 2007


On Thursday 11 October 2007 02:39, Duncan Sands wrote:
> Hi David,
>
> > "LLVM type size doesn't match GCC type size!"' failed.
>
> this assertion checks that gcc types are converted into
> LLVM types of the same size.  Try running cc1 in gdb.
> When you hit the assertion, go up a few stack frames
> until you get to ConvertType.  Do
> 	call debug_tree(type)
> That will tell you what the gcc type was.  From that
> and the LLVM type it should be clear what the ultimate
> cause of the problem was.

Ok, I think this must be related to the warning about 64-bit code.
debug_type reveals the gcc type to be a function pointer of size
32, which would indicate 32-bit code.  The llvm type is PointerTyID
of size 64, indicating 64-bit code.

This happens at line 796 of llvm-types.cpp:

      if (Ty->getTypeID() == Type::VoidTyID) 
        Ty = Type::Int8Ty;  // void* -> sbyte*
      return TypeDB.setType(type, PointerType::get(Ty));

Somehow PointerType::get is returning a 64-bit pointer even though
-m32 was passed to llvm-gcc.

I'll see if I can figure out where the 64-bit code warning is emitted and
what triggers it.

                                                   -Dave



More information about the llvm-dev mailing list