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

--- Comment #4 from Hongtao.liu <crazylht at gmail dot com> ---
After emit libcall in convert_to_mode, it failed maybe_emit_unop_insn, so all
insns deleted, but from here is already overrided, it seems to be a bug.

        if (icode != CODE_FOR_nothing)
          {
            rtx_insn *last = get_last_insn ();
            if (fmode != GET_MODE (from))
              from = convert_to_mode (fmode, from, 0);

            if (must_trunc)
              {
                rtx temp = gen_reg_rtx (GET_MODE (from));
                from = expand_unop (GET_MODE (from), ftrunc_optab, from,
                                    temp, 0);
              }

            if (imode != GET_MODE (to))
              target = gen_reg_rtx (imode);

            if (maybe_emit_unop_insn (icode, target, from,
                                      doing_unsigned ? UNSIGNED_FIX : FIX))
              {
                if (target != to)
                  convert_move (to, target, unsignedp);
                return;
              }
            delete_insns_since (last);
          }

Reply via email to