This patch to the Go frontend defaults to -fno-partial-inlining.  This
is to work around PR 91663: a case in which a function is split for
partial inlining, and then the two functions are inlined together into
a single function, leading to a confusing stack trace.  This doesn't
work for Go since it expects reliable stack traces.  We may be able to
undo this patch later if PR 91663 is fixed.  This patch bootstrapped
and ran Go testsuite on x86_64-pc-linux-gnu.  Committed to mainline.

Ian


2019-09-04  Ian Lance Taylor  <i...@golang.org>

PR tree-optimization/91663
* go-lang.c (go_langhook_post_options): Clear
flag_partial_inlining.
Index: go-lang.c
===================================================================
--- go-lang.c   (revision 275351)
+++ go-lang.c   (working copy)
@@ -300,6 +300,11 @@ go_langhook_post_options (const char **p
   if (!global_options_set.x_flag_optimize_sibling_calls)
     global_options.x_flag_optimize_sibling_calls = 0;
 
+  /* Partial inlining can confuses uses of runtime.Callers.
+     See https://gcc.gnu.org/PR91663.  */
+  if (!global_options_set.x_flag_partial_inlining)
+    global_options.x_flag_partial_inlining = 0;
+
   /* If the debug info level is still 1, as set in init_options, make
      sure that some debugging type is selected.  */
   if (global_options.x_debug_info_level == DINFO_LEVEL_TERSE

Reply via email to