[Bug tree-optimization/44485] [4.6 Regression] ICE in get_expr_operands, at tree-ssa-operands.c:1020
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44485 Jackie Rosen jackie.rosen at hushmail dot com changed: What|Removed |Added CC||jackie.rosen at hushmail dot com --- Comment #10 from Jackie Rosen jackie.rosen at hushmail dot com --- *** Bug 260998 has been marked as a duplicate of this bug. *** Seen from the domain http://volichat.com Page where seen: http://volichat.com/adult-chat-rooms Marked for reference. Resolved as fixed @bugzilla.
[Bug tree-optimization/44485] [4.6 Regression] ICE in get_expr_operands, at tree-ssa-operands.c:1020
--- Comment #8 from jakub at gcc dot gnu dot org 2010-08-26 16:39 --- Subject: Bug 44485 Author: jakub Date: Thu Aug 26 16:39:26 2010 New Revision: 163568 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=163568 Log: PR tree-optimization/44485 * calls.c (flags_from_decl_or_type): For const or pure noreturn functions return ECF_LOOPING_CONST_OR_PURE|ECF_NORETURN together with ECF_CONST resp. ECF_PURE. * builtins.c (expand_builtin): Use flags_from_decl_or_type instead of querying flags directly. * tree-ssa-loop-niter.c (finite_loop_p): Likewise. * tree-ssa-dce.c (find_obviously_necessary_stmts): Likewise. * gcc.dg/pr44485.c: New test. Added: trunk/gcc/testsuite/gcc.dg/pr44485.c Modified: trunk/gcc/ChangeLog trunk/gcc/builtins.c trunk/gcc/calls.c trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-ssa-dce.c trunk/gcc/tree-ssa-loop-niter.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44485
[Bug tree-optimization/44485] [4.6 Regression] ICE in get_expr_operands, at tree-ssa-operands.c:1020
--- Comment #9 from jakub at gcc dot gnu dot org 2010-08-26 16:48 --- Should be fixed now. -- jakub at gcc dot gnu dot org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution||FIXED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44485
[Bug tree-optimization/44485] [4.6 Regression] ICE in get_expr_operands, at tree-ssa-operands.c:1020
--- Comment #6 from jakub at gcc dot gnu dot org 2010-08-25 16:39 --- The problem is that func_21 is first marked as TREE_READONLY/DECL_LOOPING_CONST_OR_PURE_P by local_pure_const, thus there are no vops on it, but afterwards it is by another local_pure_const made also TREE_THIS_VOLATILE (i.e. noreturn). flags_from_decl_or_type doesn't set ECF_CONST for const noreturn functions though for some reason: 603 /* Process the pure and const attributes. */ 604 if (TREE_READONLY (exp) ! TREE_THIS_VOLATILE (exp)) 605flags |= ECF_CONST; 606 if (DECL_PURE_P (exp)) 607flags |= ECF_PURE; (strangely it does set ECF_PURE for pure noreturn calls), which means when fixup_noreturn_call calls update_stmt to drop lhs from the call, it adds vops that were missing before and .MEM needs renaming, but the pass in which fixup_noreturn_call is called doesn't expect that ssa needs updating. I wonder what is the reason for that ! TREE_THIS_VOLATILE (exp) above. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44485
[Bug tree-optimization/44485] [4.6 Regression] ICE in get_expr_operands, at tree-ssa-operands.c:1020
--- Comment #7 from rguenth at gcc dot gnu dot org 2010-08-25 17:26 --- (In reply to comment #6) The problem is that func_21 is first marked as TREE_READONLY/DECL_LOOPING_CONST_OR_PURE_P by local_pure_const, thus there are no vops on it, but afterwards it is by another local_pure_const made also TREE_THIS_VOLATILE (i.e. noreturn). flags_from_decl_or_type doesn't set ECF_CONST for const noreturn functions though for some reason: 603 /* Process the pure and const attributes. */ 604 if (TREE_READONLY (exp) ! TREE_THIS_VOLATILE (exp)) 605flags |= ECF_CONST; 606 if (DECL_PURE_P (exp)) 607flags |= ECF_PURE; (strangely it does set ECF_PURE for pure noreturn calls), which means when fixup_noreturn_call calls update_stmt to drop lhs from the call, it adds vops that were missing before and .MEM needs renaming, but the pass in which fixup_noreturn_call is called doesn't expect that ssa needs updating. I wonder what is the reason for that ! TREE_THIS_VOLATILE (exp) above. I'd say remove it - it probably was a measure to avoid DCEing the side-effect or so, before we had proper looping-pure-or-const. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44485
[Bug tree-optimization/44485] [4.6 Regression] ICE in get_expr_operands, at tree-ssa-operands.c:1020
--- Comment #5 from rguenth at gcc dot gnu dot org 2010-07-23 12:01 --- Probably related. Honza? -- rguenth at gcc dot gnu dot org changed: What|Removed |Added Component|c |tree-optimization http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44485