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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I think the problem is clear:
(call_insn/u 7 4 14 2 (set (reg:QI 0 ax)
        (call (mem:QI (symbol_ref:DI ("_Zlt1AS_") [flags 0x3]  <function_decl
0x7efd00f7fc00 operator<>) [0 operator< S1 A8])
            (const_int 0 [0]))) 690 {*call_value}
     (expr_list:REG_EH_REGION (const_int 0 [0])
        (nil))
    (expr_list:QI (use (mem:QI (reg/f:DI 7 sp) [0  S1 A64]))
        (expr_list:QI (use (mem:QI (reg/f:DI 7 sp) [0  S1 A64]))
            (nil))))
Note the two entries in CALL_INSN_FUNCTION_USAGE that have both size 1 and
overlap each other.  That is of course a big no no.
If the arguments are passed such that occupy no space at all, then we shouldn't
be adding C_I_F_U entries for them (but then e.g. var-tracking will be unhappy
as it won't be able to properly find other arguments) or ensure the MEMs have
zero size.  If you don't mind, I'll have a look.

Reply via email to