This removes the CALL_CANNOT_INLINE_P tree flag.  As discussed in
the thread about the duplicate edge/gimple stmt flag.

Bootstrapped and tested on x86_64-unknown-linux-gnu.

Richard.

2011-12-02  Richard Guenther  <rguent...@suse.de>

        * tree.h (CALL_CANNOT_INLINE_P): Remove.
        * tree-mudflap.c (mf_xform_statements): Do not modify alloca calls.
        * builtins.c (expand_builtin_alloca): With -fmudflap do not expand
        alloca calls inline.
        * cfgexpand.c (expand_call_stmt): Do not set CALL_CANNOT_INLINE_P.
        * gimple.c (gimple_build_call_from_tree): Do not read
        CALL_CANNOT_INLINE_P.
        * gimplify.c (gimplify_call_expr): Do not copy CALL_CANNOT_INLINE_P.

Index: gcc/tree.h
===================================================================
*** gcc/tree.h  (revision 181902)
--- gcc/tree.h  (working copy)
*************** struct GTY(()) tree_common {
*** 533,541 ****
         CASE_HIGH_SEEN in
             CASE_LABEL_EXPR
  
-        CALL_CANNOT_INLINE_P in
-            CALL_EXPR
-  
         ENUM_IS_SCOPED in
           ENUMERAL_TYPE
  
--- 533,538 ----
*************** extern void omp_clause_range_check_faile
*** 1245,1253 ****
  #define CASE_HIGH_SEEN(NODE) \
    (CASE_LABEL_EXPR_CHECK (NODE)->base.static_flag)
  
- /* Used to mark a CALL_EXPR as not suitable for inlining.  */
- #define CALL_CANNOT_INLINE_P(NODE) (CALL_EXPR_CHECK (NODE)->base.static_flag)
- 
  /* Used to mark scoped enums.  */
  #define ENUM_IS_SCOPED(NODE) (ENUMERAL_TYPE_CHECK (NODE)->base.static_flag)
  
--- 1242,1247 ----
Index: gcc/tree-mudflap.c
===================================================================
*** gcc/tree-mudflap.c  (revision 181902)
--- gcc/tree-mudflap.c  (working copy)
*************** mf_xform_derefs_1 (gimple_stmt_iterator
*** 929,935 ****
  }
  /* Transform
     1) Memory references.
-    2) BUILTIN_ALLOCA calls.
  */
  static void
  mf_xform_statements (void)
--- 929,934 ----
*************** mf_xform_statements (void)
*** 970,985 ****
                  }
                break;
  
-             case GIMPLE_CALL:
-               {
-                 tree fndecl = gimple_call_fndecl (s);
-                 if (fndecl && (DECL_FUNCTION_CODE (fndecl) == BUILT_IN_ALLOCA
-                              || (DECL_FUNCTION_CODE (fndecl)
-                                  == BUILT_IN_ALLOCA_WITH_ALIGN)))
-                   gimple_call_set_cannot_inline (s, true);
-               }
-               break;
- 
              default:
                ;
              }
--- 969,974 ----
Index: gcc/builtins.c
===================================================================
*** gcc/builtins.c      (revision 181902)
--- gcc/builtins.c      (working copy)
*************** expand_builtin_alloca (tree exp, bool ca
*** 4523,4530 ****
    bool alloca_with_align = (DECL_FUNCTION_CODE (get_callee_fndecl (exp))
                            == BUILT_IN_ALLOCA_WITH_ALIGN);
  
!   /* Emit normal call if marked not-inlineable.  */
!   if (CALL_CANNOT_INLINE_P (exp))
      return NULL_RTX;
  
    valid_arglist
--- 4523,4530 ----
    bool alloca_with_align = (DECL_FUNCTION_CODE (get_callee_fndecl (exp))
                            == BUILT_IN_ALLOCA_WITH_ALIGN);
  
!   /* Emit normal call if we use mudflap.  */
!   if (flag_mudflap)
      return NULL_RTX;
  
    valid_arglist
Index: gcc/cfgexpand.c
===================================================================
*** gcc/cfgexpand.c     (revision 181902)
--- gcc/cfgexpand.c     (working copy)
*************** expand_call_stmt (gimple stmt)
*** 2050,2056 ****
      CALL_ALLOCA_FOR_VAR_P (exp) = gimple_call_alloca_for_var_p (stmt);
    else
      CALL_FROM_THUNK_P (exp) = gimple_call_from_thunk_p (stmt);
-   CALL_CANNOT_INLINE_P (exp) = gimple_call_cannot_inline_p (stmt);
    CALL_EXPR_VA_ARG_PACK (exp) = gimple_call_va_arg_pack_p (stmt);
    SET_EXPR_LOCATION (exp, gimple_location (stmt));
    TREE_BLOCK (exp) = gimple_block (stmt);
--- 2050,2055 ----
Index: gcc/gimple.c
===================================================================
*** gcc/gimple.c        (revision 181902)
--- gcc/gimple.c        (working copy)
*************** gimple_build_call_from_tree (tree t)
*** 370,376 ****
    /* Carry all the CALL_EXPR flags to the new GIMPLE_CALL.  */
    gimple_call_set_chain (call, CALL_EXPR_STATIC_CHAIN (t));
    gimple_call_set_tail (call, CALL_EXPR_TAILCALL (t));
-   gimple_call_set_cannot_inline (call, CALL_CANNOT_INLINE_P (t));
    gimple_call_set_return_slot_opt (call, CALL_EXPR_RETURN_SLOT_OPT (t));
    if (fndecl
        && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL
--- 370,375 ----
Index: gcc/gimplify.c
===================================================================
*** gcc/gimplify.c      (revision 181902)
--- gcc/gimplify.c      (working copy)
*************** gimplify_call_expr (tree *expr_p, gimple
*** 2449,2455 ****
          CALL_EXPR_RETURN_SLOT_OPT (*expr_p)
            = CALL_EXPR_RETURN_SLOT_OPT (call);
          CALL_FROM_THUNK_P (*expr_p) = CALL_FROM_THUNK_P (call);
-         CALL_CANNOT_INLINE_P (*expr_p) = CALL_CANNOT_INLINE_P (call);
          SET_EXPR_LOCATION (*expr_p, EXPR_LOCATION (call));
          TREE_BLOCK (*expr_p) = TREE_BLOCK (call);
  
--- 2449,2454 ----

Reply via email to