diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2011-03-21 21:09:45 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2011-03-21 21:09:45 +0100 |
commit | 9e43ad6805fa887f6989c724ece2127abb117698 (patch) | |
tree | c19953dd9a862240f5583f14786e9eecaa928360 /gcc/config/alpha | |
parent | 5513ecd55e97b14db554b2e94d3f95ab175b4404 (diff) | |
download | gcc-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.c | 16 |
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) |