diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 12 | ||||
-rw-r--r-- | gcc/config/linux-android.c | 2 | ||||
-rw-r--r-- | gcc/lto-streamer-out.c | 10 | ||||
-rw-r--r-- | gcc/lto/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/lto/lto.c | 8 | ||||
-rw-r--r-- | gcc/tree-streamer-in.c | 11 | ||||
-rw-r--r-- | gcc/tree-streamer-out.c | 11 |
7 files changed, 55 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fedf7c4..2c92fd0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2013-08-29 Jan Hubicka <jh@suse.cz> + + * lto-streamer-out.c (hash_tree): Stream DECL_FINAL_P. + DECL_CXX_CONSTRUCTOR_P. DECL_CXX_DESTRUCTOR_P. + TYPE_FINAL_P. + * lto-streamer-in.c (unpack_ts_decl_with_vis_value_fields): + DECL_FINAL_P. DECL_CXX_CONSTRUCTOR_P and DECL_CXX_DESTRUCTOR_P. + (unpack_ts_type_common_value_fields): Stream TYPE_FINAL_P. + * tree-streamer-out.c (pack_ts_decl_with_vis_value_fields): + Add DECL_FINAL_P, DECL_CXX_CONSTRUCTOR_P, DECL_CXX_DESTRUCTOR_P + (pack_ts_type_common_value_fields): Add TYPE_FINAL_P. + 2013-08-29 Teresa Johnson <tejohnson@google.com> * dumpfile.c (dump_loc): Output column number. diff --git a/gcc/config/linux-android.c b/gcc/config/linux-android.c index 4a4b48d..bbe69e5 100644 --- a/gcc/config/linux-android.c +++ b/gcc/config/linux-android.c @@ -37,7 +37,7 @@ linux_android_libc_has_function (enum function_class fn_class) { if (OPTION_GLIBC) return true; - if (OPTION_BIONIC) + /*if (OPTION_BIONIC)*/ if (fn_class == function_c94 || fn_class == function_c99_misc || fn_class == function_sincos) diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c index d117568..dfcd135 100644 --- a/gcc/lto-streamer-out.c +++ b/gcc/lto-streamer-out.c @@ -795,6 +795,11 @@ hash_tree (struct streamer_tree_cache_d *cache, tree t) v); v = iterative_hash_host_wide_int (DECL_TLS_MODEL (t), v); } + if (TREE_CODE (t) == FUNCTION_DECL) + v = iterative_hash_host_wide_int (DECL_FINAL_P (t) + | (DECL_CXX_CONSTRUCTOR_P (t) << 1) + | (DECL_CXX_DESTRUCTOR_P (t) << 2), + v); if (VAR_OR_FUNCTION_DECL_P (t)) v = iterative_hash_host_wide_int (DECL_INIT_PRIORITY (t), v); } @@ -835,7 +840,10 @@ hash_tree (struct streamer_tree_cache_d *cache, tree t) | (TYPE_USER_ALIGN (t) << 5) | (TYPE_READONLY (t) << 6), v); if (RECORD_OR_UNION_TYPE_P (t)) - v = iterative_hash_host_wide_int (TYPE_TRANSPARENT_AGGR (t), v); + { + v = iterative_hash_host_wide_int (TYPE_TRANSPARENT_AGGR (t) + | (TYPE_FINAL_P (t) << 1), v); + } else if (code == ARRAY_TYPE) v = iterative_hash_host_wide_int (TYPE_NONALIASED_COMPONENT (t), v); v = iterative_hash_host_wide_int (TYPE_PRECISION (t), v); diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index 0fb1fc0..ab81a78 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,9 @@ +2013-08-29 Jan Hubicka <jh@suse.cz> + + * lto.c (compare_tree_sccs_1): Compare DECL_FINAL_P, + DECL_CXX_CONSTRUCTOR_P, DECL_CXX_DESTRUCTOR_P and + TYPE_FINAL_P. + 2013-08-28 Jan Hubicka <jh@suse.cz> * lto.c (compare_tree_sccs_1): Drop DECL_ERROR_ISSUED, diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index d3d9fab..f6e1f97 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -1889,6 +1889,9 @@ compare_tree_sccs_1 (tree t1, tree t2, tree **map) compare_values (DECL_DISREGARD_INLINE_LIMITS); compare_values (DECL_PURE_P); compare_values (DECL_LOOPING_CONST_OR_PURE_P); + compare_values (DECL_FINAL_P); + compare_values (DECL_CXX_CONSTRUCTOR_P); + compare_values (DECL_CXX_DESTRUCTOR_P); if (DECL_BUILT_IN_CLASS (t1) != NOT_BUILT_IN) compare_values (DECL_FUNCTION_CODE); if (DECL_STATIC_DESTRUCTOR (t1)) @@ -1902,7 +1905,10 @@ compare_tree_sccs_1 (tree t1, tree t2, tree **map) compare_values (TYPE_NO_FORCE_BLK); compare_values (TYPE_NEEDS_CONSTRUCTING); if (RECORD_OR_UNION_TYPE_P (t1)) - compare_values (TYPE_TRANSPARENT_AGGR); + { + compare_values (TYPE_TRANSPARENT_AGGR); + compare_values (TYPE_FINAL_P); + } else if (code == ARRAY_TYPE) compare_values (TYPE_NONALIASED_COMPONENT); compare_values (TYPE_PACKED); diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c index 47a539a..a86bcd8 100644 --- a/gcc/tree-streamer-in.c +++ b/gcc/tree-streamer-in.c @@ -272,6 +272,12 @@ unpack_ts_decl_with_vis_value_fields (struct bitpack_d *bp, tree expr) DECL_TLS_MODEL (expr) = (enum tls_model) bp_unpack_value (bp, 3); } + if (TREE_CODE (expr) == FUNCTION_DECL) + { + DECL_FINAL_P (expr) = (unsigned) bp_unpack_value (bp, 1); + DECL_CXX_CONSTRUCTOR_P (expr) = (unsigned) bp_unpack_value (bp, 1); + DECL_CXX_DESTRUCTOR_P (expr) = (unsigned) bp_unpack_value (bp, 1); + } if (VAR_OR_FUNCTION_DECL_P (expr)) { priority_type p; @@ -343,7 +349,10 @@ unpack_ts_type_common_value_fields (struct bitpack_d *bp, tree expr) TYPE_NO_FORCE_BLK (expr) = (unsigned) bp_unpack_value (bp, 1); TYPE_NEEDS_CONSTRUCTING (expr) = (unsigned) bp_unpack_value (bp, 1); if (RECORD_OR_UNION_TYPE_P (expr)) - TYPE_TRANSPARENT_AGGR (expr) = (unsigned) bp_unpack_value (bp, 1); + { + TYPE_TRANSPARENT_AGGR (expr) = (unsigned) bp_unpack_value (bp, 1); + TYPE_FINAL_P (expr) = (unsigned) bp_unpack_value (bp, 1); + } else if (TREE_CODE (expr) == ARRAY_TYPE) TYPE_NONALIASED_COMPONENT (expr) = (unsigned) bp_unpack_value (bp, 1); TYPE_PACKED (expr) = (unsigned) bp_unpack_value (bp, 1); diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c index 095d5593..98e5cf5 100644 --- a/gcc/tree-streamer-out.c +++ b/gcc/tree-streamer-out.c @@ -240,6 +240,12 @@ pack_ts_decl_with_vis_value_fields (struct bitpack_d *bp, tree expr) bp_pack_value (bp, DECL_TLS_MODEL (expr), 3); } + if (TREE_CODE (expr) == FUNCTION_DECL) + { + bp_pack_value (bp, DECL_FINAL_P (expr), 1); + bp_pack_value (bp, DECL_CXX_CONSTRUCTOR_P (expr), 1); + bp_pack_value (bp, DECL_CXX_DESTRUCTOR_P (expr), 1); + } if (VAR_OR_FUNCTION_DECL_P (expr)) bp_pack_var_len_unsigned (bp, DECL_INIT_PRIORITY (expr)); } @@ -291,7 +297,10 @@ pack_ts_type_common_value_fields (struct bitpack_d *bp, tree expr) bp_pack_value (bp, TYPE_NO_FORCE_BLK (expr), 1); bp_pack_value (bp, TYPE_NEEDS_CONSTRUCTING (expr), 1); if (RECORD_OR_UNION_TYPE_P (expr)) - bp_pack_value (bp, TYPE_TRANSPARENT_AGGR (expr), 1); + { + bp_pack_value (bp, TYPE_TRANSPARENT_AGGR (expr), 1); + bp_pack_value (bp, TYPE_FINAL_P (expr), 1); + } else if (TREE_CODE (expr) == ARRAY_TYPE) bp_pack_value (bp, TYPE_NONALIASED_COMPONENT (expr), 1); bp_pack_value (bp, TYPE_PACKED (expr), 1); |