GCC Middle and Back End API Reference
Go to the documentation of this file.
1/* Header file for exception handling.
2 Copyright (C) 2013-2024 Free Software Foundation, Inc.
4This file is part of GCC.
6GCC is free software; you can redistribute it and/or modify it under
7the terms of the GNU General Public License as published by the Free
8Software Foundation; either version 3, or (at your option) any later
11GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or
13FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 for more details.
16You should have received a copy of the GNU General Public License
17along with GCC; see the file COPYING3. If not see
18<http://www.gnu.org/licenses/>. */
20#ifndef GCC_TREE_EH_H
21#define GCC_TREE_EH_H
24typedef struct eh_region_d *eh_region;
26extern void using_eh_for_cleanups (void);
27extern void add_stmt_to_eh_lp (gimple *, int);
28extern bool remove_stmt_from_eh_lp_fn (struct function *, gimple *);
29extern bool remove_stmt_from_eh_lp (gimple *);
30extern int lookup_stmt_eh_lp_fn (struct function *, const gimple *);
31extern int lookup_stmt_eh_lp (const gimple *);
33extern edge make_eh_edge (gimple *);
36extern bool operation_could_trap_helper_p (enum tree_code, bool, bool, bool,
37 bool, tree, bool *);
38extern bool operation_could_trap_p (enum tree_code, bool, bool, tree);
39extern bool tree_could_trap_p (tree);
41extern bool stmt_could_throw_p (function *, gimple *);
43extern bool tree_could_throw_p (tree);
44extern bool stmt_can_throw_external (function *, gimple *);
45extern bool stmt_can_throw_internal (function *, gimple *);
46extern bool maybe_clean_eh_stmt_fn (struct function *, gimple *);
47extern bool maybe_clean_eh_stmt (gimple *);
49extern bool maybe_duplicate_eh_stmt_fn (struct function *, gimple *,
50 struct function *, gimple *,
52extern bool maybe_duplicate_eh_stmt (gimple *, gimple *);
53extern void maybe_remove_unreachable_handlers (void);
54extern void unsplit_eh_edges (void);
55extern bool verify_eh_edges (gimple *);
58#endif /* GCC_TREE_EH_H */
Definition hash-map.h:40
class edge_def * edge
Definition coretypes.h:342
union tree_node * tree
Definition coretypes.h:97
Definition genmatch.cc:347
Definition basic-block.h:117
Definition except.h:119
Definition function.h:249
Definition gimple.h:495
Definition gimple.h:225
bool stmt_could_throw_p(function *, gimple *)
Definition tree-eh.cc:2920
bool stmt_can_throw_external(function *, gimple *)
Definition tree-eh.cc:3002
bool maybe_duplicate_eh_stmt_fn(struct function *, gimple *, struct function *, gimple *, hash_map< void *, void * > *, int)
Definition tree-eh.cc:3086
int lookup_stmt_eh_lp_fn(struct function *, const gimple *)
Definition tree-eh.cc:142
bool verify_eh_dispatch_edge(geh_dispatch *)
Definition tree-eh.cc:4988
edge redirect_eh_edge(edge, basic_block)
Definition tree-eh.cc:2386
void add_stmt_to_eh_lp(gimple *, int)
Definition tree-eh.cc:85
void redirect_eh_dispatch_edge(geh_dispatch *, edge, basic_block)
Definition tree-eh.cc:2397
int lookup_stmt_eh_lp(const gimple *)
Definition tree-eh.cc:154
void unsplit_eh_edges(void)
Definition tree-eh.cc:4356
bool operation_could_trap_helper_p(enum tree_code, bool, bool, bool, bool, tree, bool *)
Definition tree-eh.cc:2437
bool tree_could_throw_p(tree)
Definition tree-eh.cc:2976
void maybe_remove_unreachable_handlers(void)
Definition tree-eh.cc:4176
bool verify_eh_edges(gimple *)
Definition tree-eh.cc:4927
void using_eh_for_cleanups(void)
Definition tree.cc:12767
bool tree_could_trap_p(tree)
Definition tree-eh.cc:2650
edge make_eh_edge(gimple *)
Definition tree-eh.cc:2278
tree rewrite_to_non_trapping_overflow(tree)
Definition tree-eh.cc:2849
bool maybe_duplicate_eh_stmt(gimple *, gimple *)
Definition tree-eh.cc:3128
bool make_eh_dispatch_edges(geh_dispatch *)
Definition tree-eh.cc:2239
bool operation_could_trap_p(enum tree_code, bool, bool, tree)
Definition tree-eh.cc:2561
bool stmt_can_throw_internal(function *, gimple *)
Definition tree-eh.cc:3019
bool maybe_clean_eh_stmt(gimple *)
Definition tree-eh.cc:3046
bool remove_stmt_from_eh_lp(gimple *)
Definition tree-eh.cc:131
bool maybe_clean_eh_stmt_fn(struct function *, gimple *)
Definition tree-eh.cc:3036
struct eh_region_d * eh_region
Definition tree-eh.h:24
bool maybe_clean_or_replace_eh_stmt(gimple *, gimple *)
Definition tree-eh.cc:3057
bool stmt_unremovable_because_of_non_call_eh_p(function *, gimple *)
Definition tree-eh.cc:2966
bool remove_stmt_from_eh_lp_fn(struct function *, gimple *)
Definition tree-eh.cc:114