This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/81661] [7/8 Regression] ICE in gimplify_modify_expr, at gimplify.c:5638
- From: "jakub at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 02 Aug 2017 16:56:54 +0000
- Subject: [Bug tree-optimization/81661] [7/8 Regression] ICE in gimplify_modify_expr, at gimplify.c:5638
- Auto-submitted: auto-generated
- References: <bug-81661-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81661
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So do we need some predicate that will tell us if it is safe to evaluate some
generic expression using force_gimple_operand* and bail out if it isn't
possible?
Even if gimplify_cond_expr tried harder around:
3865 if (gimplify_ctxp->allow_rhs_cond_expr
3866 /* If either branch has side effects or could trap, it
can't be
3867 evaluated unconditionally. */
3868 && !TREE_SIDE_EFFECTS (then_)
3869 && !generic_expr_could_trap_p (then_)
3870 && !TREE_SIDE_EFFECTS (else_)
3871 && !generic_expr_could_trap_p (else_))
3872 return gimplify_pure_cond_expr (expr_p, pre_p);
3873
3874 tmp = create_tmp_var (type, "iftmp");
and built for the case where gimplify_pure_cond_expr can't be used a SSA_NAME
and a PHI if we're in SSA, I guess the vast majority of callers of
force_gimple_operand* don't really expect that the sequence might need to be
split into several basic blocks.