https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88845

--- Comment #1 from Peter Bergner <bergner at gcc dot gnu.org> ---
After IRA, we have the following RTL with pseudo 124 being assigned to r9,
which does not meet the "f" constraint required by the inline asm:

(insn 6 5 7 2 (set (reg:SI 124)
        (const_int 0 [0])) "pr88845.i":10:5 494 {*movsi_internal1}
     (expr_list:REG_EQUIV (const_int 0 [0])
        (nil)))
(insn 7 6 12 2 (parallel [
            (asm_operands/v ("") ("") 0 [
                    (subreg:SF (reg:SI 124) 0)
                ]
                 [
                    (asm_input:SF ("f") pr88845.i:11)
                ]
                 [] pr88845.i:11)
            (clobber (reg:SI 76 ca))
        ]) "pr88845.i":11:3 -1
     (expr_list:REG_DEAD (reg:SI 124)
        (expr_list:REG_UNUSED (reg:SI 76 ca)
            (nil))))

LRA then generates the following:

(insn 6 5 14 2 (set (reg:SI 124)
        (const_int 0 [0])) "pr88845.i":10:5 494 {*movsi_internal1}
     (expr_list:REG_EQUIV (const_int 0 [0])
        (nil)))
(insn 14 6 7 2 (set (reg:SF 125)
        (subreg:SF (reg:SI 124) 0)) "pr88845.i":11:3 -1
     (nil))
(insn 7 14 12 2 (parallel [
            (asm_operands/v ("") ("") 0 [
                    (reg:SF 125)
                ]
                 [
                    (asm_input:SF ("f") pr88845.i:11)
                ]
                 [] pr88845.i:11)
            (clobber (reg:SI 76 ca))
        ]) "pr88845.i":11:3 -1
     (expr_list:REG_DEAD (reg:SI 124)
        (expr_list:REG_UNUSED (reg:SI 76 ca)
            (nil))))

...and we ICE in lra_set_insn_recog_data when handling the reload insn 14.

Reply via email to