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.