On June 8, 2017 5:27:24 PM GMT+02:00, Jan Hubicka <hubi...@ucw.cz> wrote:
>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.

I wonder if we shouldn't annotate exit() with non-cold instead :)

>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