From 8b9d606b3978407e04da737409fa16792f879bf4 Mon Sep 17 00:00:00 2001 From: Kenneth Zadeck Date: Mon, 18 Jun 2007 16:47:05 +0000 Subject: [PATCH] re PR rtl-optimization/32355 (ICE in df_lr_verify_transfer_functions, at df-problems.c:1924) 2007-06-18 Kenneth Zadeck PR middle-end/32355 * gcse (rest_of_handle_gcse): Add call to df_finish_pass after cse_main. * df-problems.c (df_note_bb_compute): Fix dumping info. 2007-06-18 Kenneth Zadeck * gcc.c-torture/compile/pr32355.c: New testcase. From-SVN: r125812 --- gcc/ChangeLog | 7 ++++ gcc/df-problems.c | 2 ++ gcc/gcse.c | 1 + gcc/testsuite/ChangeLog | 4 +++ gcc/testsuite/gcc.c-torture/compile/pr32355.c | 33 +++++++++++++++++++ 5 files changed, 47 insertions(+) create mode 100644 gcc/testsuite/gcc.c-torture/compile/pr32355.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8c847c7a98a..00b1ec91452 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2007-06-18 Kenneth Zadeck + + PR middle-end/32355 + * gcse (rest_of_handle_gcse): Add call to df_finish_pass after + cse_main. + * df-problems.c (df_note_bb_compute): Fix dumping info. + 2007-06-18 Kazu Hirata * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return diff --git a/gcc/df-problems.c b/gcc/df-problems.c index 79b2f42fba7..dc5270e935b 100644 --- a/gcc/df-problems.c +++ b/gcc/df-problems.c @@ -3867,8 +3867,10 @@ df_note_bb_compute (unsigned int bb_index, for (def_rec = df_get_artificial_defs (bb_index); *def_rec; def_rec++) { struct df_ref *def = *def_rec; +#ifdef REG_DEAD_DEBUGGING if (dump_file) fprintf (dump_file, "artificial def %d\n", DF_REF_REGNO (def)); +#endif if ((DF_REF_FLAGS (def) & DF_REF_AT_TOP) == 0) bitmap_clear_bit (live, DF_REF_REGNO (def)); diff --git a/gcc/gcse.c b/gcc/gcse.c index 8517e38ec00..828ee6b3254 100644 --- a/gcc/gcse.c +++ b/gcc/gcse.c @@ -6704,6 +6704,7 @@ rest_of_handle_gcse (void) { timevar_push (TV_CSE); tem2 = cse_main (get_insns (), max_reg_num ()); + df_finish_pass (); purge_all_dead_edges (); delete_trivially_dead_insns (get_insns (), max_reg_num ()); timevar_pop (TV_CSE); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 845cd6b5a3e..7550286b7a0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2007-06-18 Kenneth Zadeck + + * gcc.c-torture/compile/pr32355.c: New testcase. + 2007-06-18 Uros Bizjak PR tree-optimization/32383 diff --git a/gcc/testsuite/gcc.c-torture/compile/pr32355.c b/gcc/testsuite/gcc.c-torture/compile/pr32355.c new file mode 100644 index 00000000000..126412d30bc --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr32355.c @@ -0,0 +1,33 @@ +/* { dg-options "-O3" } */ + +typedef struct +{ +} +__sigset_t; +typedef struct +{ + char coredump; +} +EMode; +extern EMode Mode; +struct sigaction +{ + __sigset_t sa_mask; + int sa_flags; +}; +doSignalsSetup (void) +{ + static const int signals[] = { + 1, 2 , 3, 4, 6, 8, 11, 13, 14, 15, 10, 12, 17, 7 + }; + unsigned int i, sig; + struct sigaction sa; + for (i = 0; i < sizeof (signals) / sizeof (int); i++) + { + sig = signals[i]; + if (Mode.coredump && (sig == 4 || sig == 8)) + continue; + sa.sa_flags = (sig == 17); + sigemptyset (&sa.sa_mask); + } +}