diff options
author | Gary Funck <gary@intrepid.com> | 2017-10-17 03:19:54 +0000 |
---|---|---|
committer | Gary Funck <gary@intrepid.com> | 2017-10-17 03:19:54 +0000 |
commit | 94de5b24eede2f2ed005b253a2c584675cd682d8 (patch) | |
tree | ac7aa645d5d9139bd11f7410e3654026e3e2cd44 /gcc/except.c | |
parent | 7af4e6706d969f6d2402e0a50473a70a9c85e5be (diff) | |
parent | 8905b0de50e8b67dda7c2e787c840720b98a637d (diff) |
Merge trunk version 253779 into gupc branch.gupc
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gupc@253802 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/except.c')
-rw-r--r-- | gcc/except.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/gcc/except.c b/gcc/except.c index 4991e7bb01b..041f89a55e5 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -147,7 +147,9 @@ along with GCC; see the file COPYING3. If not see static GTY(()) int call_site_base; -static GTY (()) hash_map<tree_hash, tree> *type_to_runtime_map; +static GTY(()) hash_map<tree_hash, tree> *type_to_runtime_map; + +static GTY(()) tree setjmp_fn; /* Describe the SjLj_Function_Context structure. */ static GTY(()) tree sjlj_fc_type_node; @@ -331,6 +333,16 @@ init_eh (void) sjlj_fc_jbuf_ofs = (tree_to_uhwi (DECL_FIELD_OFFSET (f_jbuf)) + tree_to_uhwi (DECL_FIELD_BIT_OFFSET (f_jbuf)) / BITS_PER_UNIT); + +#ifdef DONT_USE_BUILTIN_SETJMP + tmp = build_function_type_list (integer_type_node, TREE_TYPE (f_jbuf), + NULL); + setjmp_fn = build_decl (BUILTINS_LOCATION, FUNCTION_DECL, + get_identifier ("setjmp"), tmp); + TREE_PUBLIC (setjmp_fn) = 1; + DECL_EXTERNAL (setjmp_fn) = 1; + DECL_ASSEMBLER_NAME (setjmp_fn); +#endif } } @@ -1176,8 +1188,7 @@ sjlj_emit_function_enter (rtx_code_label *dispatch_label) addr = convert_memory_address (ptr_mode, addr); tree addr_tree = make_tree (ptr_type_node, addr); - tree fn = builtin_decl_implicit (BUILT_IN_SETJMP); - tree call_expr = build_call_expr (fn, 1, addr_tree); + tree call_expr = build_call_expr (setjmp_fn, 1, addr_tree); rtx x = expand_call (call_expr, NULL_RTX, false); emit_cmp_and_jump_insns (x, const0_rtx, NE, 0, |