From fcc42bcad4fac328cb9696186c30012e2454c3e2 Mon Sep 17 00:00:00 2001 From: Andreas Krebbel Date: Wed, 13 Sep 2006 10:59:03 +0000 Subject: flow.c (calculate_global_regs_live): Invalidate eh registers on eh edges. 2006-09-13 Andreas Krebbel * flow.c (calculate_global_regs_live): Invalidate eh registers on eh edges. Renamed invalidated_by_call to invalidated_by_eh_edge. (propagate_block): Handle eh registers as if they were set at basic block start. * except.c (dw2_build_landing_pads): Don't emit clobbers for eh registers. * global.c (global_conflicts): Make eh registers to conflict with pseudos live at basic block begin. * basic_block.h (bb_has_eh_pred): New function. From-SVN: r116920 --- gcc/basic-block.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'gcc/basic-block.h') diff --git a/gcc/basic-block.h b/gcc/basic-block.h index bc9f665..a95e5b8 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -1175,4 +1175,18 @@ extern bool rtx_equiv_p (rtx *, rtx, int, struct equiv_info *); /* In cfgrtl.c */ extern bool condjump_equiv_p (struct equiv_info *, bool); +/* Return true when one of the predecessor edges of BB is marked with FLAGS. */ +static inline bool bb_has_eh_pred (basic_block bb) +{ + edge e; + edge_iterator ei; + + FOR_EACH_EDGE (e, ei, bb->preds) + { + if (e->flags & EDGE_EH) + return true; + } + return false; +} + #endif /* GCC_BASIC_BLOCK_H */ -- cgit v1.1