[Bug ipa/93385] [10 Regression] wrong code with u128 modulo at -O2 -fno-dce -fno-ipa-cp -fno-tree-dce
rguenther at suse dot de
gcc-bugzilla@gcc.gnu.org
Fri Apr 17 14:00:18 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93385
--- Comment #24 from rguenther at suse dot de <rguenther at suse dot de> ---
On April 17, 2020 3:53:07 PM GMT+02:00, "jakub at gcc dot gnu.org"
<gcc-bugzilla@gcc.gnu.org> wrote:
>https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93385
>
>--- Comment #23 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
>Instead of #c11 I meant:
>- else if ((is_gimple_assign (stmt) && !gimple_has_volatile_ops
>(stmt))
>- || gimple_code (stmt) == GIMPLE_PHI)
>+ else if (flag_tree_dce
>+ && ((is_gimple_assign (stmt) &&
>!gimple_has_volatile_ops
>(stmt))
>+ || gimple_code (stmt) == GIMPLE_PHI))
>because the res = -1 handling is in the else after this already.
>
>For what Richi is proposing, I guess one needs to run the analysis
>somewhere
>(early tree_function_versioning or elsewhere?, note in a hash_set stmts
>that
>shouldn't be copied, add pointer to that hash_set to copy_body_data and
>perhaps
>in remap_gimple_stmt if the hash_set pointer is non-NULL, check early
>if stmt
>is in it and in that case return NULL (like we already return NULL for
>debug
>stmts if we want to drop them).
>Most likely the lhs of such to be removed statements need to be also
>added to
>id.killed_new_ssa_names (and verify if it works properly).
I'd definitely make sure to map supposed to be DCEd defs to error_mark_node.
For the marking one could add id.plf_to_dce and clear/set the plf on the stmts.
More information about the Gcc-bugs
mailing list