https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85955
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Component|c |middle-end Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Mine as well. We are gimplifying 3791 if (!update_call_from_tree (gsi, result)) 3792 gimplify_and_update_call_from_tree (gsi, result); 3793 return true; (gdb) p debug_generic_expr (result) *sinx_3(D) = IMAGPART_EXPR <SAVE_EXPR <__builtin_cexpi (x_2(D))>>;, *cosx_4(D) = REALPART_EXPR <SAVE_EXPR <__builtin_cexpi (x_2(D))>>; and as part of that failing the store because of the arg mismatch. This is because gimple_builtin_call_types_compatible_p uses useless_type_conversion_p and double * and double ** do not require a conversion in GIMPLE.