From e1df04775d6d0c3f905b9e77e371be04a035e50e Mon Sep 17 00:00:00 2001
From: Richard Henderson <rth@redhat.com>
Date: Thu, 13 Dec 2012 11:31:06 -0800
Subject: [PATCH] alpha: Consider barriers when placing nops after sibcalls

        * config/alpha/alpha.c (alpha_pad_function_end): Consider barriers
        when looking for NOTE_INSN_CALL_ARG_LOCATION.

From-SVN: r194484
---
 gcc/ChangeLog            |  5 +++++
 gcc/config/alpha/alpha.c | 21 ++++++++++++---------
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 825694ef97d4..9f1af89f7fc6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-12-13  Richard Henderson  <rth@redhat.com>
+
+	* config/alpha/alpha.c (alpha_pad_function_end): Consider barriers
+	when looking for NOTE_INSN_CALL_ARG_LOCATION.
+
 2012-12-13  Richard Biener  <rguenther@suse.de>
 
 	PR middle-end/53476
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 82135ffda3d5..84112182426b 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -9253,23 +9253,26 @@ alpha_pad_function_end (void)
 
   for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
     {
-      if (! (CALL_P (insn)
-	     && (SIBLING_CALL_P (insn)
-		 || find_reg_note (insn, REG_NORETURN, NULL_RTX))))
+      if (!CALL_P (insn)
+	  || !(SIBLING_CALL_P (insn)
+	       || find_reg_note (insn, REG_NORETURN, NULL_RTX)))
         continue;
 
       /* Make sure we do not split a call and its corresponding
 	 CALL_ARG_LOCATION note.  */
-      if (CALL_P (insn))
+      next = NEXT_INSN (insn);
+      if (next == NULL)
+	continue;
+      if (BARRIER_P (next))
 	{
-	  next = NEXT_INSN (insn);
-	  if (next && NOTE_P (next)
-	      && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION)
-	    insn = next;
+	  next = NEXT_INSN (next);
+	  if (next == NULL)
+	    continue;
 	}
+      if (NOTE_P (next) && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION)
+	insn = next;
 
       next = next_active_insn (insn);
-
       if (next)
 	{
 	  rtx pat = PATTERN (next);
-- 
GitLab