From 8c760464d0148aba6bc8a2f2ab7ecf6a8fd43127 Mon Sep 17 00:00:00 2001 From: Peter Bergner Date: Wed, 4 Apr 2018 10:35:03 -0500 Subject: re PR rtl-optimization/84878 (ICE: Segmentation fault (in add_cross_iteration_register_deps)) gcc/ PR rtl-optimization/84878 * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine the basic block. Assert the use reference is not artificial and that it has an associated insn. gcc/testsuite/ PR rtl-optimization/84878 * gcc.target/powerpc/pr84878.c: New test. From-SVN: r259085 --- gcc/ddg.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'gcc/ddg.c') diff --git a/gcc/ddg.c b/gcc/ddg.c index cffed2b..d514566 100644 --- a/gcc/ddg.c +++ b/gcc/ddg.c @@ -295,11 +295,14 @@ add_cross_iteration_register_deps (ddg_ptr g, df_ref last_def) /* Create inter-loop true dependences and anti dependences. */ for (r_use = DF_REF_CHAIN (last_def); r_use != NULL; r_use = r_use->next) { - rtx_insn *use_insn = DF_REF_INSN (r_use->ref); - - if (BLOCK_FOR_INSN (use_insn) != g->bb) + if (DF_REF_BB (r_use->ref) != g->bb) continue; + gcc_assert (!DF_REF_IS_ARTIFICIAL (r_use->ref) + && DF_REF_INSN_INFO (r_use->ref) != NULL); + + rtx_insn *use_insn = DF_REF_INSN (r_use->ref); + /* ??? Do not handle uses with DF_REF_IN_NOTE notes. */ use_node = get_node_of_insn (g, use_insn); gcc_assert (use_node); -- cgit v1.1