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



Steven Bosscher <steven at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

             Status|ASSIGNED                    |NEW

                 CC|                            |abel at gcc dot gnu.org

         AssignedTo|steven at gcc dot gnu.org   |unassigned at gcc dot

                   |                            |gnu.org



--- Comment #2 from Steven Bosscher <steven at gcc dot gnu.org> 2013-04-16 
20:54:17 UTC ---

Breakpoint 5, sel_remove_insn (insn=0x3fffb5da4e78, only_disconnect=false,

full_tidying=false) at ../../trunk/gcc/sel-sched-ir.c:3938

3938          delete_insn (insn);

1: debug_rtx(insn) = (insn 303 190 191 10 (set (reg:DF 165 f37 [421])

        (unspec:DF [

                (mem:DF (reg/f:DI 18 r18 [420]) [2 *a_7(D) S8 A64])

            ] UNSPEC_LDA)) 13 {movdf_advanced}

     (nil))

void

(gdb) up

#1  0x0000000010843984 in remove_insn_from_stream (insn=0x3fffb5da4e78,

only_disconnect=false) at ../../trunk/gcc/sel-sched.c:6042

6042      sel_remove_insn (insn, only_disconnect, false);

(gdb) up

#2  0x0000000010843af0 in move_op_orig_expr_found (insn=0x3fffb5da4e78,

expr=0x115f9fd8, lparams=0x3fffffffda78, static_params=0x3fffffffdaa8) at

../../trunk/gcc/sel-sched.c:6066

6066      remove_insn_from_stream (insn, only_disconnect);

gdb) p only_disconnect

$19 = false

(gdb) l 6060

6055      moveop_static_params_p params = (moveop_static_params_p)

static_params;

6056

6057      copy_expr_onside (params->c_expr, INSN_EXPR (insn));

6058      track_scheduled_insns_and_blocks (insn);

6059      insn_emitted = handle_emitting_transformations (insn, expr, params);

6060      only_disconnect = (params->uid == INSN_UID (insn)

6061                         && ! insn_emitted  && ! EXPR_WAS_CHANGED (expr));

6062

6063      /* Mark that we've disconnected an insn.  */

6064      if (only_disconnect)

(gdb) p params->uid

$20 = 303

(gdb) p insn_emitted

$21 = false

(gdb) p EXPR_WAS_CHANGED(expr)

$22 = true



No idea what to make of this. sel-sched deliberately chooses to discard

the insn instead of only disconnecting it, but it re-emits the insn

later anyway.  That's wrong.



CC sel-sched guru.

Reply via email to