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 <[EMAIL PROTECTED]> 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@cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits@cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to