From: Martin Liska Date: Fri, 20 Jan 2017 08:52:46 +0000 (+0100) Subject: ipa-inline-transform.c (inline_call): Drop -fstrict-aliasing when inlining -fno-stric... X-Git-Tag: releases/gcc-5.5.0~576 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=210b9355f5b0e91f0baf313f11384579bb8b96a2;p=thirdparty%2Fgcc.git ipa-inline-transform.c (inline_call): Drop -fstrict-aliasing when inlining -fno-strict-aliasing into... * ipa-inline-transform.c (inline_call): Drop -fstrict-aliasing when inlining -fno-strict-aliasing into -fstrict-aliasing body. From-SVN: r244690 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 44e57619de11..e92d48d6ef41 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2017-01-20 Martin Liska + + Backport from mainline + 2016-01-01 Jan Hubicka + + * ipa-inline-transform.c (inline_call): Drop + -fstrict-aliasing when inlining -fno-strict-aliasing into + -fstrict-aliasing body. + 2017-01-20 Martin Liska Backport from mainline diff --git a/gcc/ipa-inline-transform.c b/gcc/ipa-inline-transform.c index 5a628f39dd68..b160e9f13905 100644 --- a/gcc/ipa-inline-transform.c +++ b/gcc/ipa-inline-transform.c @@ -341,6 +341,21 @@ inline_call (struct cgraph_edge *e, bool update_original, if (DECL_FUNCTION_PERSONALITY (callee->decl)) DECL_FUNCTION_PERSONALITY (to->decl) = DECL_FUNCTION_PERSONALITY (callee->decl); + if (!opt_for_fn (callee->decl, flag_strict_aliasing) + && opt_for_fn (to->decl, flag_strict_aliasing)) + { + struct gcc_options opts = global_options; + + cl_optimization_restore (&opts, + TREE_OPTIMIZATION (DECL_FUNCTION_SPECIFIC_OPTIMIZATION (to->decl))); + opts.x_flag_strict_aliasing = false; + if (dump_file) + fprintf (dump_file, "Dropping flag_strict_aliasing on %s:%i\n", + to->name (), to->order); + build_optimization_node (&opts); + DECL_FUNCTION_SPECIFIC_OPTIMIZATION (to->decl) + = build_optimization_node (&opts); + } /* If aliases are involved, redirect edge to the actual destination and possibly remove the aliases. */