[llvm-commits] [llvm] r37843 - /llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

Evan Cheng evan.cheng at apple.com
Thu Jul 5 17:52:34 PDT 2007


Hi Dan,

Ok, this is the problem:

         li r4, 124
         li r30, 0
         mr r2, r30
         mr r29, r30
LBB1_1: ;bb
         li r3, lo16(LCPI1_0)
         rlwinm r5, r4, 3, 29, 29
         addis r3, r3, ha16(LCPI1_0)
         stw r4, 64(r1)
         stw r30, 68(r1)

The last two instructions are storing the wrong values. They should be
         stw r30, 64(r1)
         stw r4, 68(r1)

Please take a look at this asap. Thanks.

Evan

On Jul 5, 2007, at 4:57 PM, Evan Cheng wrote:

> Here is a much simpler test case:
>
> SingleSource/UnitTests/2005-05-12-Int64ToFP.c:
>
> I am still trying to figure out what exactly is wrong.
>
> Evan
>
> On Jul 5, 2007, at 4:33 PM, Bill Wendling wrote:
>
>> On 7/5/07, Evan Cheng <evan.cheng at apple.com> wrote:
>>>
>>> On Jul 5, 2007, at 7:49 AM, Dan Gohman wrote:
>>>
>>>> Hi Evan,
>>>>
>>>> I'm currently testing the attached patch, which seems to fix the
>>>> problems for PPC. It extends getCopyToParts and getCopyFromParts
>>>> to have an extra parameter to indicate when endian-swapping is
>>>> needed. I don't have access to a PPC test environment; I've  
>>>> included
>>>> a few trivial regression tests in this patch; I'll do some more
>>>> soon.
>>>
>>> Thanks. I'll do some testing.
>>>
>>>>
>>>> Copying to virtual registers is always done in little-endian order,
>>>> while copying to physical registers, arguments, or return values,
>>>> is done in target-endian order. I wonder if it would make sense to
>>>> change to using target-endian order for virtual registers as well?
>>>
>>> I don't think it matters, does it? If it makes the code cleaner then
>>> please do so.
>>>
>> FWIW, the PPC bootstrap is still failing with this patch. It's doing
>> so at an earlier stage now. Here's part of the log file that shows  
>> the
>> failure:
>>
>> # When building multilibbed target libraries, all the required
>> # When building multilibbed target libraries, all the required
>> # libraries are expected to exist in the multilib directory.
>> MLIBS=` ./xgcc -B./
>> -B/usr/local/llvm-gcc-install/powerpc-apple-darwin9/bin/ -isystem
>> /usr/local/llvm-gcc-install/powerpc-apple-darwin9/include -isystem
>> /usr/local/llvm-gcc-install/powerpc-apple-darwin9/sys-include
>> -L/Volumes/SandBox/Clean/llvm-1040-01.roots/llvm-1040-01~obj/obj-
>> powerpc-powerpc/gcc/../ld
>> --print-multi-lib \
>> 		| sed -e 's/;.*$//' -e '/^\.$/d'` ; \
>> 	for mlib in $MLIBS ; do \
>> 	  rm -f ${mlib}/libgcc_s.10.4.dylib || exit 1 ; \
>> 	  ln -s ../libgcc_s.10.4.dylib ${mlib}/libgcc_s.10.4.dylib || exit
>> 1 ; \
>> 	done
>> # libraries are expected to exist in the multilib directory.
>> MLIBS=` ./xgcc -B./
>> -B/usr/local/llvm-gcc-install/powerpc-apple-darwin9/bin/ -isystem
>> /usr/local/llvm-gcc-install/powerpc-apple-darwin9/include -isystem
>> /usr/local/llvm-gcc-install/powerpc-apple-darwin9/sys-include
>> -L/Volumes/SandBox/Clean/llvm-1040-01.roots/llvm-1040-01~obj/obj-
>> powerpc-powerpc/gcc/../ld
>> --print-multi-lib \
>> 		| sed -e 's/;.*$//' -e '/^\.$/d'` ; \
>> 	for mlib in $MLIBS ; do \
>> 	  rm -f ${mlib}/libgcc_s.10.5.dylib || exit 1 ; \
>> 	  ln -s ../libgcc_s.10.5.dylib ${mlib}/libgcc_s.10.5.dylib || exit
>> 1 ; \
>> 	done
>> MLIBS=` ./xgcc -B./
>> -B/usr/local/llvm-gcc-install/powerpc-apple-darwin9/bin/ -isystem
>> /usr/local/llvm-gcc-install/powerpc-apple-darwin9/include -isystem
>> /usr/local/llvm-gcc-install/powerpc-apple-darwin9/sys-include
>> -L/Volumes/SandBox/Clean/llvm-1040-01.roots/llvm-1040-01~obj/obj-
>> powerpc-powerpc/gcc/../ld
>> --print-multi-lib \
>> 		| sed -e 's/;.*$//' -e '/^\.$/d'` ; \
>> 	for mlib in '' $MLIBS ; do \
>> 	  strip -o libgcc_s.10.5.dylib_T${mlib} \
>> 	    -s /Volumes/SandBox/Clean/llvm-1040-01.roots/llvm-1040-01~obj/
>> src/gcc/config/rs6000/darwin-libgcc.10.5.ver
>> -c -u \
>> 	    ./${mlib}/libgcc_s.1.dylib.tmp || exit 1 ; \
>> 	done
>> MLIBS=` ./xgcc -B./
>> -B/usr/local/llvm-gcc-install/powerpc-apple-darwin9/bin/ -isystem
>> /usr/local/llvm-gcc-install/powerpc-apple-darwin9/include -isystem
>> /usr/local/llvm-gcc-install/powerpc-apple-darwin9/sys-include
>> -L/Volumes/SandBox/Clean/llvm-1040-01.roots/llvm-1040-01~obj/obj-
>> powerpc-powerpc/gcc/../ld
>> --print-multi-lib \
>> 		| sed -e 's/;.*$//' -e '/^\.$/d'` ; \
>> 	for mlib in '' $MLIBS ; do \
>> 	  strip -o libgcc_s.10.4.dylib_T${mlib} \
>> 	    -s /Volumes/SandBox/Clean/llvm-1040-01.roots/llvm-1040-01~obj/
>> src/gcc/config/rs6000/darwin-libgcc.10.4.ver
>> -c -u \
>> 	    ./${mlib}/libgcc_s.1.dylib.tmp || exit 1 ; \
>> 	done
>> lipo -output libgcc_s.10.4.dylib -create libgcc_s.10.4.dylib_T*
>> lipo -output libgcc_s.10.5.dylib -create libgcc_s.10.5.dylib_T*
>> rm libgcc_s.10.5.dylib_T*
>> rm libgcc_s.10.4.dylib_T*
>> # When building multilibbed target libraries, all the required
>> # libraries are expected to exist in the multilib directory.
>> MLIBS=` ./xgcc -B./
>> -B/usr/local/llvm-gcc-install/powerpc-apple-darwin9/bin/ -isystem
>> /usr/local/llvm-gcc-install/powerpc-apple-darwin9/include -isystem
>> /usr/local/llvm-gcc-install/powerpc-apple-darwin9/sys-include
>> -L/Volumes/SandBox/Clean/llvm-1040-01.roots/llvm-1040-01~obj/obj-
>> powerpc-powerpc/gcc/../ld
>> --print-multi-lib \
>> 		| sed -e 's/;.*$//' -e '/^\.$/d'` ; \
>> 	for mlib in '' $MLIBS ; do \
>> 	  cp ./${mlib}/libgcc_s.1.dylib.tmp \
>> 	    ./libgcc_s.1.dylib_T_${mlib} || exit 1 ; \
>> 	done
>> lipo -output libgcc_s.1.dylib \
>> 	  -create libgcc_s.1.dylib_T*
>> rm libgcc_s.1.dylib_T*
>> make[3]: *** [libgcc_s.1.dylib] Segmentation fault
>> make[3]: *** Deleting file `libgcc_s.1.dylib'
>> rm cpp.pod gfdl.pod fsf-funding.pod gcov.pod gcc.pod gpl.pod
>> make[2]: *** [stage1_build] Error 2
>> make[1]: *** [bootstrap] Error 2
>> + exit 1
>> make: *** [install] Error 1
>>
>> -bw
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list