Another movdf_hardfloat32 patch

Franz Sirl Franz.Sirl-kernel@lauterbach.com
Fri Jun 25 05:43:00 GMT 1999


At 06:57 25.06.99 , Jeffrey A Law wrote:
>   In message < 9906230415.AA47648@marc.watson.ibm.com >you write:
>   >     Does this patch catch all of the non-offsettable yet non-indexed
>   > cases which were causing the problem?  The indexed version of the code
>   > should be avoided where it can -- including LO_SUM addresses.  A LO_SUM
>   > address is required to be the equivalent of an offsettable address:
>   > reg+const.
>   >
>   > David
>   >
>   >     * rs6000.md (movdf_hardfloat32): Revert previous patch.
>   >     Handle LO_SUM the same as offsettable in cases 1 and 2.
>Thanks.  I also reverted my rs6000.c patch for handling LO_SUM in 
>find_addr_reg
>and installed the resulting patch into the mainline sources and on the
>gcc-2.95 branch.

Now something is broken again, eg. in the unsorted/blk.c testcase:

~/gcc/BUILD/obj-ppc-linux/gcc/xgcc -B ~/gcc/BUILD/obj-ppc-linux/gcc/ -O2 
-save-temps blk.c -dap
blk.s: Assembler messages:
blk.s:61: Error: unsupported relocation type

blk.s:
     46  main:
     47          stwu 1,-32(1)
     48          mflr 0
     49          stw 29,20(1)
     50          stw 30,24(1)
     51          stw 31,28(1)
     52          stw 0,36(1)
     53          lis 8,bar+48@ha  # 8    elf_high        [length = 4]
     54          lis 9,0x3ff0     # 41   movsi+1/6       [length = 4]
     55          li 10,0  # 42   movsi+1/5       [length = 4]
     56          lis 29,foo@ha    # 13   elf_high        [length = 4]
     57          la 29,foo@l(29)  # 14   elf_low [length = 4]
     58          lis 11,0x4000    # 43   movsi+1/6       [length = 4]
     59          li 12,0  # 44   movsi+1/5       [length = 4]
     60          stw 9,bar+48@l(8)        # 
11   *movdf_hardfloat32/3    [length = 16]
     61          stw 10,4((null))
     62          stw 11,48(29)    # 17   *movdf_hardfloat32/3    [length = 16]
     63          stw 12,52(29)
     64          bl foobar        # 
20   *ret_call_nonlocal_sysv/1       [length = 4]
     65          lfd 1,48(29)     # 29   *movdf_hardfloat32/8    [length = 4]
     66          lis 3,.LC0@ha    # 26   elf_high        [length = 4]
     67          la 3,.LC0@l(3)   # 27   elf_low [length = 4]
     68          creqv 6,6,6      # 
31   *ret_call_nonlocal_sysv/2       [length = 8]
     69          bl printf
     70          lwz 0,36(1)
     71          mtlr 0
     72          lwz 29,20(1)
     73          lwz 30,24(1)
     74          lwz 31,28(1)
     75          la 1,32(1)
     76          blr

It seems something tries to print a NULL pointer.

Franz.



More information about the Gcc-patches mailing list