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

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:5450833e4f9993f81ac16cbbcf4e46881a519f85

commit r13-6847-g5450833e4f9993f81ac16cbbcf4e46881a519f85
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Fri Mar 24 10:38:42 2023 +0100

    builtins: Fix up ICE in inline_string_cmp [PR109258]

    The PR109086 r13-6690 inline_string_cmp change to
          if (diff != result)
            emit_move_insn (result, diff);
    regressed
    FAIL: go.test/test/fixedbugs/bug207.go,  -O2 -g  (internal compiler error:
in emit_move_insn, at expr.cc:4224)
    The problem is the Go FE doesn't mark __builtin_memcmp as pure (I'll also
    send patch for that) and so result is const0_rtx when the call lost its lhs
    and the above move ICEs because moving something into const0_rtx is
obviously
    invalid.
    I think it is better not to rely on all FEs having these *cmp functions
    pure anD DCE being performed.  The following patch just punts from the
    inline expansion in that case, so we just emit normal library call.

    2023-03-24  Jakub Jelinek  <ja...@redhat.com>

            PR middle-end/109258
            * builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX
early
            if target == const0_rtx.

Reply via email to