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.