Mercurial > hg > CbC > CbC_gcc
comparison gcc/cfgbuild.c @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | b7f97abdc517 |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
65:65488c3d617d | 67:f6334be47118 |
---|---|
1 /* Control flow graph building code for GNU compiler. | 1 /* Control flow graph building code for GNU compiler. |
2 Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, | 2 Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, |
3 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 | 3 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010 |
4 Free Software Foundation, Inc. | 4 Free Software Foundation, Inc. |
5 | 5 |
6 This file is part of GCC. | 6 This file is part of GCC. |
7 | 7 |
8 GCC is free software; you can redistribute it and/or modify it under | 8 GCC is free software; you can redistribute it and/or modify it under |
32 #include "flags.h" | 32 #include "flags.h" |
33 #include "output.h" | 33 #include "output.h" |
34 #include "function.h" | 34 #include "function.h" |
35 #include "except.h" | 35 #include "except.h" |
36 #include "expr.h" | 36 #include "expr.h" |
37 #include "toplev.h" | 37 #include "diagnostic-core.h" |
38 #include "timevar.h" | 38 #include "timevar.h" |
39 #include "sbitmap.h" | 39 #include "sbitmap.h" |
40 | 40 |
41 static void make_edges (basic_block, basic_block, int); | 41 static void make_edges (basic_block, basic_block, int); |
42 static void make_label_edge (sbitmap, basic_block, rtx, int); | 42 static void make_label_edge (sbitmap, basic_block, rtx, int); |
110 case INSN: | 110 case INSN: |
111 /* Treat trap instructions like noreturn calls (same provision). */ | 111 /* Treat trap instructions like noreturn calls (same provision). */ |
112 if (GET_CODE (PATTERN (insn)) == TRAP_IF | 112 if (GET_CODE (PATTERN (insn)) == TRAP_IF |
113 && XEXP (PATTERN (insn), 0) == const1_rtx) | 113 && XEXP (PATTERN (insn), 0) == const1_rtx) |
114 return true; | 114 return true; |
115 if (!flag_non_call_exceptions) | 115 if (!cfun->can_throw_non_call_exceptions) |
116 return false; | 116 return false; |
117 break; | 117 break; |
118 | 118 |
119 case BARRIER: | 119 case BARRIER: |
120 /* It is nonsense to reach barrier when looking for the | 120 /* It is nonsense to reach barrier when looking for the |
331 | 331 |
332 /* If this is a CALL_INSN, then mark it as reaching the active EH | 332 /* If this is a CALL_INSN, then mark it as reaching the active EH |
333 handler for this CALL_INSN. If we're handling non-call | 333 handler for this CALL_INSN. If we're handling non-call |
334 exceptions then any insn can reach any of the active handlers. | 334 exceptions then any insn can reach any of the active handlers. |
335 Also mark the CALL_INSN as reaching any nonlocal goto handler. */ | 335 Also mark the CALL_INSN as reaching any nonlocal goto handler. */ |
336 else if (code == CALL_INSN || flag_non_call_exceptions) | 336 else if (code == CALL_INSN || cfun->can_throw_non_call_exceptions) |
337 { | 337 { |
338 /* Add any appropriate EH edges. */ | 338 /* Add any appropriate EH edges. */ |
339 rtl_make_eh_edge (edge_cache, bb, insn); | 339 rtl_make_eh_edge (edge_cache, bb, insn); |
340 | 340 |
341 if (code == CALL_INSN && nonlocal_goto_handler_labels) | 341 if (code == CALL_INSN && nonlocal_goto_handler_labels) |