On 12/19/2017 03:02 PM, Jakub Jelinek wrote:
> Hi!
> 
> The following testcase ICEs because we get:
> (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))))
> where the CALL_INSN_FUNCTION_USAGE USEs for the two empty arguments
> have size 1 and overlap.  In the PR I've added a patch that makes sure
> the MEMs have BLKmode and zero size, but actually I fail to see any
> advantages in having anything for the TYPE_EMPTY_P arguments in C_I_F_U,
> because we actually don't store anything at all, and furthermore I don't
> see even the need to actually create the MEMs for stack and stack_slot
> fields etc.
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
> 
> 2017-12-19  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR c++/83490
>       * calls.c (compute_argument_addresses): Ignore TYPE_EMPTY_P arguments.
> 
>       * g++.dg/abi/empty29.C: New test.
OK
jeff

Reply via email to