On 04/11/13 01:59, Tom de Vries wrote: > On 29/10/13 14:54, Jakub Jelinek wrote: >> +/* Return true if all imm uses of VAR are either in STMT, or >> + feed (optionally through a chain of single imm uses) GIMPLE_COND >> + in basic block COND_BB. */ >> + >> +static bool >> +all_imm_uses_in_stmt_or_feed_cond (tree var, gimple stmt, basic_block >> cond_bb) >> +{ >> + use_operand_p use_p, use2_p; >> + imm_use_iterator iter; >> + >> + FOR_EACH_IMM_USE_FAST (use_p, iter, var) >> + if (USE_STMT (use_p) != stmt) >> + { >> + gimple use_stmt = USE_STMT (use_p); >> + if (is_gimple_debug (use_stmt)) >> + continue; >> + while (is_gimple_assign (use_stmt) >> + && single_imm_use (gimple_assign_lhs (use_stmt), >> + &use2_p, &use_stmt)) >> + ; >> + if (gimple_code (use_stmt) != GIMPLE_COND >> + || gimple_bb (use_stmt) != cond_bb) >> + return false; >> + } >> + return true; >> +} >> + > > Jakub, > > with g++.dg/torture/pr54684.C and -fno-tree-tail-merge, I run into a sigsegv > because of gimple_code (use_stmt) being called with use_stmt == NULL. >
It's a duplicate of PR58978 - '[4.9 Regression] ICE: Segmentation fault' http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58978 Thanks, - Tom