Hi,
this patch adds cold attributes to (some of) our internal checking.  This makes
it possible to to propagate zero counts on these and produce bit better code
(especially for checking enabled compiler).

Bootstrapped/regtested x86_64-linux, comited.

Honza

        * system.h (fancy_abort): Annotate by ATTRIBUTE_COLD.
        * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
        rtl_check_failed_type2, rtl_check_failed_code1,
        rtl_check_failed_code2, rtl_check_failed_code_mode,
        rtl_check_failed_block_symbol, cwi_check_failed_bounds,
        rtvec_check_failed_bounds, rtl_check_failed_flag,
        _fatal_insn_not_found, _fatal_insn): Likewise.
        * tree.h (tree_contains_struct_check_failed,
        tree_check_failed, tree_not_check_failed,
        tree_class_check_failed, tree_range_check_failed,
        tree_not_class_check_failed, tree_int_cst_elt_check_failed,
        tree_vec_elt_check_failed, phi_node_elt_check_failed,
        tree_operand_check_failed, omp_clause_check_failed,
        omp_clause_operand_check_failed, omp_clause_range_check_failed):
        Likewise.
        * cp/cp-tree.h (lang_check_failed): Annotate by ATTRIBUTE_COLD.

Index: system.h
===================================================================
--- system.h    (revision 249013)
+++ system.h    (working copy)
@@ -722,7 +722,8 @@ extern int vsnprintf (char *, size_t, co
 
 /* Redefine abort to report an internal error w/o coredump, and
    reporting the location of the error in the source file.  */
-extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
+extern void fancy_abort (const char *, int, const char *)
+                                        ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 #define abort() fancy_abort (__FILE__, __LINE__, __FUNCTION__)
 
 /* Use gcc_assert(EXPR) to test invariants.  */
Index: rtl.h
===================================================================
--- rtl.h       (revision 249013)
+++ rtl.h       (working copy)
@@ -1148,30 +1148,30 @@ is_a_helper <rtx_note *>::test (rtx_insn
 
 extern void rtl_check_failed_bounds (const_rtx, int, const char *, int,
                                     const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void rtl_check_failed_type1 (const_rtx, int, int, const char *, int,
                                    const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void rtl_check_failed_type2 (const_rtx, int, int, int, const char *,
                                    int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void rtl_check_failed_code1 (const_rtx, enum rtx_code, const char *,
                                    int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void rtl_check_failed_code2 (const_rtx, enum rtx_code, enum rtx_code,
                                    const char *, int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void rtl_check_failed_code_mode (const_rtx, enum rtx_code, machine_mode,
                                        bool, const char *, int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void rtl_check_failed_block_symbol (const char *, int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void cwi_check_failed_bounds (const_rtx, int, const char *, int,
                                     const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void rtvec_check_failed_bounds (const_rtvec, int, const char *, int,
                                       const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 
 #else   /* not ENABLE_RTL_CHECKING */
 
@@ -1269,7 +1269,7 @@ extern void rtvec_check_failed_bounds (c
 
 extern void rtl_check_failed_flag (const char *, const_rtx, const char *,
                                   int, const char *)
-    ATTRIBUTE_NORETURN
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD
     ;
 
 #else  /* not ENABLE_RTL_FLAG_CHECKING */
@@ -3793,9 +3793,9 @@ extern location_t curr_insn_location (vo
 
 /* rtl-error.c */
 extern void _fatal_insn_not_found (const_rtx, const char *, int, const char *)
-     ATTRIBUTE_NORETURN;
+     ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void _fatal_insn (const char *, const_rtx, const char *, int, const 
char *)
-     ATTRIBUTE_NORETURN;
+     ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 
 #define fatal_insn(msgid, insn) \
        _fatal_insn (msgid, insn, __FILE__, __LINE__, __FUNCTION__)
Index: tree.h
===================================================================
--- tree.h      (revision 249013)
+++ tree.h      (working copy)
@@ -358,45 +358,45 @@ as_internal_fn (combined_fn code)
 extern void tree_contains_struct_check_failed (const_tree,
                                               const enum 
tree_node_structure_enum,
                                               const char *, int, const char *)
-  ATTRIBUTE_NORETURN;
+  ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 
 extern void tree_check_failed (const_tree, const char *, int, const char *,
-                              ...) ATTRIBUTE_NORETURN;
+                              ...) ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void tree_not_check_failed (const_tree, const char *, int, const char *,
-                                  ...) ATTRIBUTE_NORETURN;
+                                  ...) ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void tree_class_check_failed (const_tree, const enum tree_code_class,
                                     const char *, int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void tree_range_check_failed (const_tree, const char *, int,
                                     const char *, enum tree_code,
                                     enum tree_code)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void tree_not_class_check_failed (const_tree,
                                         const enum tree_code_class,
                                         const char *, int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void tree_int_cst_elt_check_failed (int, int, const char *,
                                           int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void tree_vec_elt_check_failed (int, int, const char *,
                                       int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void phi_node_elt_check_failed (int, int, const char *,
                                       int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void tree_operand_check_failed (int, const_tree,
                                       const char *, int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void omp_clause_check_failed (const_tree, const char *, int,
                                     const char *, enum omp_clause_code)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void omp_clause_operand_check_failed (int, const_tree, const char *,
                                             int, const char *)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 extern void omp_clause_range_check_failed (const_tree, const char *, int,
                               const char *, enum omp_clause_code,
                               enum omp_clause_code)
-    ATTRIBUTE_NORETURN;
+    ATTRIBUTE_NORETURN ATTRIBUTE_COLD;
 
 #else /* not ENABLE_TREE_CHECKING, or not gcc */
 
Index: cp/cp-tree.h
===================================================================
--- cp/cp-tree.h        (revision 249013)
+++ cp/cp-tree.h        (working copy)
@@ -6819,7 +6819,8 @@ extern void cp_free_lang_data                     (tree t
 extern tree force_target_expr                  (tree, tree, tsubst_flags_t);
 extern tree build_target_expr_with_type                (tree, tree, 
tsubst_flags_t);
 extern void lang_check_failed                  (const char *, int,
-                                                const char *) 
ATTRIBUTE_NORETURN;
+                                                const char *) 
ATTRIBUTE_NORETURN
+                                                ATTRIBUTE_COLD;
 extern tree stabilize_expr                     (tree, tree *);
 extern void stabilize_call                     (tree, tree *);
 extern bool stabilize_init                     (tree, tree *);

Reply via email to