xtensa: Fix PR target/78603
authorMax Filippov <jcmvbkbc@gmail.com>
Tue, 29 Nov 2016 22:22:13 +0000 (22:22 +0000)
committerMax Filippov <jcmvbkbc@gcc.gnu.org>
Tue, 29 Nov 2016 22:22:13 +0000 (22:22 +0000)
2016-11-29  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
* config/xtensa/xtensa.c (hwloop_optimize): Don't emit zero
overhead loop start between a call and its CALL_ARG_LOCATION
note.

From-SVN: r242979

gcc/ChangeLog
gcc/config/xtensa/xtensa.c

index 7ec2c074cc6264b993d1d05cf64f53bba5489138..fb3b4136dad630b7760e226bacd7119ac04b0979 100644 (file)
@@ -1,3 +1,10 @@
+2016-11-29  Max Filippov  <jcmvbkbc@gmail.com>
+
+       PR target/78603
+       * config/xtensa/xtensa.c (hwloop_optimize): Don't emit zero
+       overhead loop start between a call and its CALL_ARG_LOCATION
+       note.
+
 2016-11-29  Waldemar Brodkorb  <wbx@openadk.org>
 
        * config/bfin/linux.h (CPP_SPEC): Define.
index 6e8a25d0307d5aeacf07148c534727f1c24aa7f5..25ed7db4cd88840ae5cedf9d9f2b2655503c3c78 100644 (file)
@@ -4167,7 +4167,10 @@ hwloop_optimize (hwloop_info loop)
       entry_after = BB_END (entry_bb);
       while (DEBUG_INSN_P (entry_after)
              || (NOTE_P (entry_after)
-                 && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK))
+                 && NOTE_KIND (entry_after) != NOTE_INSN_BASIC_BLOCK
+                /* Make sure we don't split a call and its corresponding
+                   CALL_ARG_LOCATION note.  */
+                 && NOTE_KIND (entry_after) != NOTE_INSN_CALL_ARG_LOCATION))
         entry_after = PREV_INSN (entry_after);
 
       emit_insn_after (seq, entry_after);