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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|target                      |sanitizer
   Last reconfirmed|                            |2023-12-17
     Ever confirmed|0                           |1
                 CC|                            |dodji at gcc dot gnu.org,
                   |                            |dvyukov at gcc dot gnu.org,
                   |                            |jakub at gcc dot gnu.org,
                   |                            |kcc at gcc dot gnu.org,
                   |                            |marxin at gcc dot gnu.org
             Status|UNCONFIRMED                 |NEW

--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
Middle-end is calling emit_move_insn from:

(gdb) f 3
#3  0x0000000000aac95c in expand_gimple_stmt_1 (stmt=0x7fffe9fe70a0) at
../../git/gcc/gcc/cfgexpand.cc:4030
4030                      emit_move_insn (target, temp);
(gdb) list
4026                else
4027                  {
4028                    temp = force_operand (temp, target);
4029                    if (temp != target)
4030                      emit_move_insn (target, temp);
4031                  }

target = 
(reg:SI 99 [ _5 ])

temp = 
(mem/f/c:DI (plus:DI (reg/f:DI 93 virtual-stack-vars)
        (const_int -8 [0xfffffffffffffff8])) [8 d+0 S4 A32])

and triggeres gcc_assert in emit_move_insn due to mode mismatch.

This happens when expanding:

  unsigned int _5;

  __builtin___ubsan_handle_type_mismatch_v1 (&*.Lubsan_data0, _5);

where sanitizer builtin expects PTR.

DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1,
                      "__ubsan_handle_type_mismatch_v1",
                      BT_FN_VOID_PTR_PTR,
                      ATTR_COLD_NOTHROW_LEAF_LIST)

Confirmed as a sanitizer issue.

Reply via email to