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

--- Comment #2 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:b737b70fad398728f6006e8397d1bb31ccea4ce7

commit r11-5831-gb737b70fad398728f6006e8397d1bb31ccea4ce7
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Mon Dec 7 19:20:25 2020 +0100

    builtins: Avoid ICE with __builtin_clear_padding on
POINTERS_EXTEND_UNSIGNED targets [PR98147]

    The function that calls targetm.emit_call_builtin___clear_cache
    asserts that each of the begin and end operands has either ptr_mode or
    Pmode.
    On most targets that is the same mode, but e.g. on aarch64 -mabi=ilp32
    or a few others it is different.  When a target has a clear cache
    non-library handler, it will use create_address_operand which will do the
    conversion to the right mode automatically, but when emitting a library
    call, we just say the operands are ptr_mode even when they can be Pmode
    too; in that case we need to convert explicitly.

    2020-12-07  Jakub Jelinek  <ja...@redhat.com>

            PR target/98147
            * builtins.c (default_emit_call_builtin___clear_cache): Call
            convert_memory_address to ptr_mode on both begin and end.

            * gcc.dg/pr98147.c: New test.

Reply via email to