]> gcc.gnu.org Git - gcc.git/commitdiff
calls.c (special_function_p): setjmp-like functions are leaf.
authorRichard Biener <rguenther@suse.de>
Tue, 7 May 2013 13:02:36 +0000 (13:02 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 7 May 2013 13:02:36 +0000 (13:02 +0000)
2013-05-07  Richard Biener  <rguenther@suse.de>

* calls.c (special_function_p): setjmp-like functions are leaf.
* builtins.def (BUILT_IN_SETJMP): setjmp is leaf.
* tree-inline.c (update_ssa_across_abnormal_edges): Remove assert.

From-SVN: r198681

gcc/ChangeLog
gcc/builtins.def
gcc/calls.c
gcc/tree-inline.c

index 98e76ce27af4a6d764d38044ac76fac13f90d364..62feb5901f168522570390278fd995199358acae 100644 (file)
@@ -1,3 +1,9 @@
+2013-05-07  Richard Biener  <rguenther@suse.de>
+
+       * calls.c (special_function_p): setjmp-like functions are leaf.
+       * builtins.def (BUILT_IN_SETJMP): setjmp is leaf.
+       * tree-inline.c (update_ssa_across_abnormal_edges): Remove assert.
+
 2013-05-07  Sofiane Naci  <sofiane.naci@arm.com>
 
        * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>): call splitter.
index b26eb247491863145bd5efd1961d9e60fadb9992..276f89c26e29cc6ca23002c54f71001591114f95 100644 (file)
@@ -732,7 +732,7 @@ DEF_LIB_BUILTIN        (BUILT_IN_REALLOC, "realloc", BT_FN_PTR_PTR_SIZE, ATTR_NO
 DEF_GCC_BUILTIN        (BUILT_IN_RETURN, "return", BT_FN_VOID_PTR, ATTR_NORETURN_NOTHROW_LEAF_LIST)
 DEF_GCC_BUILTIN        (BUILT_IN_RETURN_ADDRESS, "return_address", BT_FN_PTR_UINT, ATTR_LEAF_LIST)
 DEF_GCC_BUILTIN        (BUILT_IN_SAVEREGS, "saveregs", BT_FN_PTR_VAR, ATTR_NULL)
-DEF_GCC_BUILTIN        (BUILT_IN_SETJMP, "setjmp", BT_FN_INT_PTR, ATTR_NULL)
+DEF_GCC_BUILTIN        (BUILT_IN_SETJMP, "setjmp", BT_FN_INT_PTR, ATTR_NOTHROW_LEAF_LIST)
 DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRFMON, "strfmon", BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_STRFMON_NOTHROW_3_4)
 DEF_LIB_BUILTIN        (BUILT_IN_STRFTIME, "strftime", BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR, ATTR_FORMAT_STRFTIME_NOTHROW_3_0)
 DEF_GCC_BUILTIN        (BUILT_IN_TRAP, "trap", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_LIST)
index cdab8e04617cf7246ccba5e0c8f66296d6182c6b..0c7f22566bca805af477585aaa0991f2a8bce27a 100644 (file)
@@ -545,7 +545,7 @@ special_function_p (const_tree fndecl, int flags)
                  && ! strcmp (tname, "sigsetjmp"))
              || (tname[1] == 'a'
                  && ! strcmp (tname, "savectx")))
-           flags |= ECF_RETURNS_TWICE;
+           flags |= ECF_RETURNS_TWICE | ECF_LEAF;
 
          if (tname[1] == 'i'
              && ! strcmp (tname, "siglongjmp"))
@@ -557,7 +557,7 @@ special_function_p (const_tree fndecl, int flags)
                   && ! strcmp (tname, "vfork"))
               || (tname[0] == 'g' && tname[1] == 'e'
                   && !strcmp (tname, "getcontext")))
-       flags |= ECF_RETURNS_TWICE;
+       flags |= ECF_RETURNS_TWICE | ECF_LEAF;
 
       else if (tname[0] == 'l' && tname[1] == 'o'
               && ! strcmp (tname, "longjmp"))
index 83b41b1ef2c48bb6bcbb6a551fa8722d98568fb0..57af7de2c09ecf675be11ad8b61a7b17dac97d50 100644 (file)
@@ -1835,8 +1835,8 @@ update_ssa_across_abnormal_edges (basic_block bb, basic_block ret_bb,
 
            phi = gsi_stmt (si);
 
-           /* There shouldn't be any PHI nodes in the ENTRY_BLOCK.  */
-           gcc_assert (!e->dest->aux);
+           /* For abnormal goto/call edges the receiver can be the
+              ENTRY_BLOCK.  Do not assert this cannot happen.  */
 
            gcc_assert ((e->flags & EDGE_EH)
                        || SSA_NAME_OCCURS_IN_ABNORMAL_PHI (PHI_RESULT (phi)));
This page took 0.07257 seconds and 5 git commands to generate.