------- Comment #1 from rguenth at gcc dot gnu dot org  2010-03-22 11:11 -------
#1  0x0000000000958e6e in form_sum (mode=SImode, x=0x7ffff7fb2a80, 
    y=0x7ffff5ae1b58) at /space/rguenther/src/svn/trunk/gcc/reload.c:5348
5348      gcc_assert (GET_MODE (x) == mode || GET_MODE (x) == VOIDmode);
(gdb) call debug_rtx (x)
(reg/v:DI 41 r12 [orig:61 b ] [61])
(gdb) up
#2  0x000000000096560c in eliminate_regs_1 (x=0x7ffff5ae1af8, 
    mem_mode=VOIDmode, insn=0x7ffff5ae1ac8, may_use_invariant=1 '\001')
    at /space/rguenther/src/svn/trunk/gcc/reload1.c:2678
2678                new_rtx = form_sum (GET_MODE (x), new0, new1);
#3  0x0000000000965914 in eliminate_regs_1 (x=0x7ffff5ae1ae0, 
    mem_mode=VOIDmode, insn=0x7ffff5ae1ac8, may_use_invariant=1 '\001')
    at /space/rguenther/src/svn/trunk/gcc/reload1.c:2745
2745              new_rtx = eliminate_regs_1 (XEXP (x, 0), mem_mode, insn,
true);
#4  0x00000000009659f0 in eliminate_regs_1 (x=0x7ffff5ae1ac8, 
    mem_mode=VOIDmode, insn=0x7ffff5ae1ac8, may_use_invariant=1 '\001')
    at /space/rguenther/src/svn/trunk/gcc/reload1.c:2768
2768              new_rtx = eliminate_regs_1 (XEXP (x, 1), mem_mode, insn,
true);
#5  0x00000000009679c5 in eliminate_regs_in_insn (insn=0x7ffff5ade000, 
    replace=0) at /space/rguenther/src/svn/trunk/gcc/reload1.c:3596
3596        REG_NOTES (insn)
(gdb) call debug_rtx (insn)
(insn 26 25 27 5 /tmp/t.f90:9 (set (mem/c/i:SI (plus:DI (reg/f:DI 7 sp)
                (const_int 8 [0x8])) [6 D.1561+0 S4 A64])
        (reg:SI 0 ax [83])) 47 {*movsi_1} (expr_list:REG_DEAD (reg:SI 0 ax
[83])
        (expr_list:REG_EQUAL (plus:SI (reg/v:DI 41 r12 [orig:61 b ] [61])
                (mem/c/i:SI (plus:DI (reg/f:DI 20 frame)
                        (const_int -4 [0xfffffffffffffffc])) [6 c+0 S4 A32]))
            (nil))))

somehow in the REG_EQUAL note we have a SI mode PLUS with DI mode arguments.

It is regmove which changes

(insn 26 25 27 5 /tmp/t.f90:9 (set (mem/c/i:SI (plus:DI (reg/f:DI 20 frame)
                (const_int -8 [0xfffffffffffffff8])) [6 D.1561+0 S4 A64])
        (reg:SI 83)) 47 {*movsi_1} (expr_list:REG_DEAD (reg:SI 83)
        (expr_list:REG_EQUAL (plus:SI (reg/v:SI 61 [ b ])
                (mem/c/i:SI (plus:DI (reg/f:DI 20 frame)
                        (const_int -4 [0xfffffffffffffffc])) [6 c+0 S4 A32]))
            (nil))))

to

(insn 26 25 27 5 /tmp/t.f90:9 (set (mem/c/i:SI (plus:DI (reg/f:DI 20 frame)
                (const_int -8 [0xfffffffffffffff8])) [6 D.1561+0 S4 A64])
        (reg:SI 83)) 47 {*movsi_1} (expr_list:REG_DEAD (reg:SI 83)
        (expr_list:REG_EQUAL (plus:SI (reg/v:DI 61 [ b ])
                (mem/c/i:SI (plus:DI (reg/f:DI 20 frame)
                        (const_int -4 [0xfffffffffffffffc])) [6 c+0 S4 A32]))
            (nil))))


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bernds at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2010-03-22 11:11:38
               date|                            |
   Target Milestone|---                         |4.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43475

Reply via email to