Move non-local goto expansion after parm_birth_insn (PR sanitize/81186).
authorMartin Liska <mliska@suse.cz>
Wed, 26 Jul 2017 08:52:37 +0000 (10:52 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Wed, 26 Jul 2017 08:52:37 +0000 (08:52 +0000)
2017-07-26  Martin Liska  <mliska@suse.cz>

PR sanitize/81186
* function.c (expand_function_start): Make expansion of
nonlocal_goto_save_area after parm_birth_insn.
2017-07-26  Martin Liska  <mliska@suse.cz>

PR sanitize/81186
* gcc.dg/asan/pr81186.c: New test.

From-SVN: r250561

gcc/ChangeLog
gcc/function.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/asan/pr81186.c [new file with mode: 0644]

index f7482c12a38a1c14f1964ce732f375a8eaf12b11..2adda50f195798e4a0a0fc7ffc9a6806dfd3f827 100644 (file)
@@ -1,3 +1,9 @@
+2017-07-26  Martin Liska  <mliska@suse.cz>
+
+       PR sanitize/81186
+       * function.c (expand_function_start): Make expansion of
+       nonlocal_goto_save_area after parm_birth_insn.
+
 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
        * config/sparc/sparc.c (sparc_option_override): Remove MASK_FPU
index 986f43f07048649c0a48ad7f1deff088e789ff90..62e72eb2a9ff874e900e63cc6e3a50bd7b51ffa2 100644 (file)
@@ -5254,6 +5254,16 @@ expand_function_start (tree subr)
        }
     }
 
+  /* The following was moved from init_function_start.
+     The move is supposed to make sdb output more accurate.  */
+  /* Indicate the beginning of the function body,
+     as opposed to parm setup.  */
+  emit_note (NOTE_INSN_FUNCTION_BEG);
+
+  gcc_assert (NOTE_P (get_last_insn ()));
+
+  parm_birth_insn = get_last_insn ();
+
   /* If the function receives a non-local goto, then store the
      bits we need to restore the frame pointer.  */
   if (cfun->nonlocal_goto_save_area)
@@ -5275,16 +5285,6 @@ expand_function_start (tree subr)
       update_nonlocal_goto_save_area ();
     }
 
-  /* The following was moved from init_function_start.
-     The move is supposed to make sdb output more accurate.  */
-  /* Indicate the beginning of the function body,
-     as opposed to parm setup.  */
-  emit_note (NOTE_INSN_FUNCTION_BEG);
-
-  gcc_assert (NOTE_P (get_last_insn ()));
-
-  parm_birth_insn = get_last_insn ();
-
   if (crtl->profile)
     {
 #ifdef PROFILE_HOOK
index ba9e571982ba2e78ae89f3037b76c9499e563f71..0794a290aab3703193c8d2bd08316c8ed8a9cfa9 100644 (file)
@@ -1,3 +1,8 @@
+2017-07-26  Martin Liska  <mliska@suse.cz>
+
+       PR sanitize/81186
+       * gcc.dg/asan/pr81186.c: New test.
+
 2017-07-25  Carl Love  <cel@us.ibm.com>
 
        * gcc.target/powerpc/builtins-4-p9-runnable.c:  Add test file for
diff --git a/gcc/testsuite/gcc.dg/asan/pr81186.c b/gcc/testsuite/gcc.dg/asan/pr81186.c
new file mode 100644 (file)
index 0000000..7f0f672
--- /dev/null
@@ -0,0 +1,18 @@
+/* PR sanitizer/81186 */
+/* { dg-do run } */
+
+int
+main ()
+{
+  __label__ l;
+  void f ()
+  {
+    int a[123];
+
+    goto l;
+  }
+
+  f ();
+l:
+  return 0;
+}