On Mon, 8 Oct 2007, Evan Cheng wrote:> I am turning 32-bit add into 32-bit LEA on x86-64 but that's > perfectly legal. Both > leal (%esi,%edi), %eax > leal (%rsi,%rdi), %eax > are legal assembly. It's just the former requires a 67H prefix due to > the 32-bit address size. > > This does point to a performance problem in the 3 address conversion > code (which I will fix), but it should not cause the assembler to > complain.Thanks for fixing this. IIRC, some versions of GAS don't support the less efficient encoding at all. In any case, this should be fixed. Dave, can you verify bootstrap works now? -Chris>>>> I also see warnings like this: >>>> >>>> [x86_64-mod-dbg]: ./xgcc -B./ >>>> -B/install.modified.debug/x86_64-unknown-linux-gnu/x86_64-unknown- >>>> linux-gnu/bin/ >>>> -isystem /install.modified.debug/x86_64-unknown-linux-gnu/x86_64- >>>> unknown-linux-gnu/include >>>> -isystem /install.modified.debug/x86_64-unknown-linux-gnu/x86_64- >>>> unknown-linux-gnu/sys-include >>>> -L/tmp/ptmp/dag/build.llvm-gcc-4.0.modified.debug/x86_64-unknown- >>>> linux-gnu/gcc/../ld >>>> -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes >>>> -Wmissing-prototypes -Wold-style-definition -isystem ./include - >>>> fPIC -g >>>> -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -I. -I. >>>> -I/llvm-project.modified/llvm-gcc-4.0/trunk/gcc >>>> -I/llvm-project.modified/llvm-gcc-4.0/trunk/gcc/. >>>> -I/llvm-project.modified/llvm-gcc-4.0/trunk/gcc/../include >>>> -I/llvm-project.modified/llvm-gcc-4.0/trunk/gcc/../libcpp/include >>>> -I/llvm-project.modified/llvm/trunk/include >>>> -I/ptmp/dag/build.llvm.modified.debug/x86_64-unknown-linux-gnu/ >>>> include >>>> -DL_absvdi2 -c /llvm-project.modified/llvm-gcc-4.0/trunk/gcc/ >>>> libgcc2.c -o >>>> libgcc/./_absvdi2.o >>>> [x86_64-mod-dbg]: WARNING: 128-bit integers not supported! >>>> >>>> This is from the latest trunk. Is anyone else seeing this problem? >>>> >>>> -Dave >>>> _______________________________________________ >>>> LLVM Developers mailing list >>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >> >> -Chris >> >> -- >> http://nondot.org/sabre/ >> http://llvm.org/ >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-Chris -- http://nondot.org/sabre/ http://llvm.org/
On Wednesday 10 October 2007 12:53, Chris Lattner wrote:> On Mon, 8 Oct 2007, Evan Cheng wrote: > > I am turning 32-bit add into 32-bit LEA on x86-64 but that's > > perfectly legal. Both > > leal (%esi,%edi), %eax > > leal (%rsi,%rdi), %eax > > are legal assembly. It's just the former requires a 67H prefix due to > > the 32-bit address size. > > > > This does point to a performance problem in the 3 address conversion > > code (which I will fix), but it should not cause the assembler to > > complain. > > Thanks for fixing this. IIRC, some versions of GAS don't support the less > efficient encoding at all. In any case, this should be fixed. Dave, can > you verify bootstrap works now?This particular problem is gone (thanks!) but I'm having other troubles. I'm tracking those down now. -Dave
On Wednesday 10 October 2007 17:12, David Greene wrote:> This particular problem is gone (thanks!) but I'm having other troubles. > I'm tracking those down now.This is the current problem: [x86_64-off-dbg]: ./xgcc -B./ -B/install.official.debug/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/bin/ -isystem /install.official.debug/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/include -isystem /install.official.debug/x86_64-unknown-linux-gnu/x86_64-unknown-linux-gnu/sys-include -L/tmp/ptmp/dag/build.llvm-gcc-4.0.official.debug/x86_64-unknown-linux-gnu/gcc/../ld -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -I. -I32 -I/llvm-project.official/llvm-gcc-4.0/trunk/gcc -I/llvm-project.official/llvm-gcc-4.0/trunk/gcc/32 -I/llvm-project.official/llvm-gcc-4.0/trunk/gcc/../include -I/llvm-project.official/llvm-gcc-4.0/trunk/gcc/../libcpp/include -I/llvm-project.official/llvm/trunk/include -I/ptmp/dag/build.llvm.official.debug/x86_64-unknown-linux-gnu/include -m32 -g0 -finhibit-size-directive -fno-inline-functions -fno-exceptions -fno-zero-initialized-in-bss -fno-unit-at-a-time -fno-omit-frame-pointer -fno-asynchronous-unwind-tables \ [x86_64-off-dbg]: -c /llvm-project.official/llvm-gcc-4.0/trunk/gcc/crtstuff.c -DCRT_BEGIN \ [x86_64-off-dbg]: -o 32/crtbegin.o [x86_64-off-dbg]: Warning: Generation of 64-bit code for a 32-bit processor requested. [x86_64-off-dbg]: Warning: 64-bit processors all have at least SSE2. [x86_64-off-dbg]: cc1: /llvm-project.official/llvm-gcc-4.0/trunk/gcc/llvm-types.cpp:82: const llvm::Type* llvm_set_type(tree_node*, const llvm::Type*): Assertion `(! (__extension__ ({ const tree __t = (Tr); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "/llvm-project.official/llvm-gcc-4.0/trunk/gcc/llvm-types.cpp", 82, __FUNCTION__); __t; })->type.size) || !Ty->isSized() || !isInt64 ((__extension__ ({ const tree __t = (Tr); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "/llvm-project.official/llvm-gcc-4.0/trunk/gcc/llvm-types.cpp", 82, __FUNCTION__); __t; })->type.size), true) || getInt64((__extension__ ({ const tree __t = (Tr); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "/llvm-project.official/llvm-gcc-4.0/trunk/gcc/llvm-types.cpp", 82, __FUNCTION__); __t; })->type.size), true) == getTargetData().getABITypeSizeInBits(Ty)) && "LLVM type size doesn't match GCC type size!"' failed. [x86_64-off-dbg]: /llvm-project.official/llvm-gcc-4.0/trunk/gcc/crtstuff.c:194: internal compiler error: Aborted Unfortunately, I don't know enough about gcc internals to really dig into this. If someone immediately knows what this is, then great. Otherwise I may have to start reading info files. :) The warning about 64-bit code on a 32-bit target is worrisome. Is that supposed to happen? -Dave
Reasonably Related Threads
- [LLVMdev] llvm-gcc 4.2 assertion failed on linux x86_64
- [LLVMdev] llvm-gcc 4.2 assertion failed on linux x86_64
- [LLVMdev] llvm-gcc 4.2 assertion failed on linux x86_64
- [LLVMdev] llvm-gcc 4.2 assertion failed on linux x86_64
- [LLVMdev] llvm-gcc 4.2 assertion failed on linux x86_64