aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/alpha
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2011-03-21 21:09:45 +0100
committerUros Bizjak <uros@gcc.gnu.org>2011-03-21 21:09:45 +0100
commit9e43ad6805fa887f6989c724ece2127abb117698 (patch)
treec19953dd9a862240f5583f14786e9eecaa928360 /gcc/config/alpha
parent5513ecd55e97b14db554b2e94d3f95ab175b4404 (diff)
downloadgcc-9e43ad6805fa887f6989c724ece2127abb117698.zip
gcc-9e43ad6805fa887f6989c724ece2127abb117698.tar.gz
gcc-9e43ad6805fa887f6989c724ece2127abb117698.tar.bz2
alpha.c (alpha_pad_noreturn): Do not emit an unop between a call and its CALL_ARG_LOCATION note.
* config/alpha/alpha.c (alpha_pad_noreturn): Do not emit an unop between a call and its CALL_ARG_LOCATION note. From-SVN: r171266
Diffstat (limited to 'gcc/config/alpha')
-rw-r--r--gcc/config/alpha/alpha.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 78b4d17..c9bafeb 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -1,6 +1,6 @@
/* Subroutines used for code generation on the DEC Alpha.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
@@ -9645,10 +9645,20 @@ alpha_pad_noreturn (void)
for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
{
- if (!CALL_P (insn)
- || !find_reg_note (insn, REG_NORETURN, NULL_RTX))
+ if (! (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 && NOTE_P (next)
+ && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION)
+ insn = next;
+ }
+
next = next_active_insn (insn);
if (next)