From: Bernd Schmidt Date: Fri, 20 Feb 2015 10:01:17 +0000 (+0000) Subject: tree-streamer.c (preload_common_nodes): Don't preload TI_VA_LIST* for offloading. X-Git-Tag: upstream/12.2.0~56562 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=db3267c60664bcfa8d7b0683a5567b24432b5a48;p=platform%2Fupstream%2Fgcc.git tree-streamer.c (preload_common_nodes): Don't preload TI_VA_LIST* for offloading. * tree-streamer.c (preload_common_nodes): Don't preload TI_VA_LIST* for offloading. * tree-stdarg.c (pass_stdarg::gate): Disable for ACCEL_COMPILER in_lto_p. Co-Authored-By: Jakub Jelinek From-SVN: r220846 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f36328e..ff6df3d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2015-02-20 Bernd Schmidt + Jakub Jelinek + + * tree-streamer.c (preload_common_nodes): Don't preload + TI_VA_LIST* for offloading. + * tree-stdarg.c (pass_stdarg::gate): Disable for ACCEL_COMPILER + in_lto_p. + 2015-02-19 John David Anglin * config/pa/pa.c (pa_emit_move_sequence): Always force diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c index 17d51a2..0c70790 100644 --- a/gcc/tree-stdarg.c +++ b/gcc/tree-stdarg.c @@ -705,6 +705,13 @@ public: virtual bool gate (function *fun) { return (flag_stdarg_opt +#ifdef ACCEL_COMPILER + /* Disable for GCC5 in the offloading compilers, as + va_list and gpr/fpr counter fields are not merged. + In GCC6 when stdarg is lowered late this shouldn't be + an issue. */ + && !in_lto_p +#endif /* This optimization is only for stdarg functions. */ && fun->stdarg != 0); } diff --git a/gcc/tree-streamer.c b/gcc/tree-streamer.c index 8f597aa..7b35358 100644 --- a/gcc/tree-streamer.c +++ b/gcc/tree-streamer.c @@ -342,7 +342,14 @@ preload_common_nodes (struct streamer_tree_cache_d *cache) && i != TI_TARGET_OPTION_DEFAULT && i != TI_TARGET_OPTION_CURRENT && i != TI_CURRENT_TARGET_PRAGMA - && i != TI_CURRENT_OPTIMIZE_PRAGMA) + && i != TI_CURRENT_OPTIMIZE_PRAGMA + /* Skip va_list* related nodes if offloading. For native LTO + we want them to be merged for the stdarg pass, for offloading + they might not be identical between host and offloading target. */ + && (!lto_stream_offload_p + || (i != TI_VA_LIST_TYPE + && i != TI_VA_LIST_GPR_COUNTER_FIELD + && i != TI_VA_LIST_FPR_COUNTER_FIELD))) record_common_node (cache, global_trees[i]); }