alpha.c (alpha_pad_noreturn): Do not emit an unop between a call and its CALL_ARG_LOC...
authorUros Bizjak <uros@gcc.gnu.org>
Mon, 21 Mar 2011 20:09:45 +0000 (21:09 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 21 Mar 2011 20:09:45 +0000 (21:09 +0100)
* config/alpha/alpha.c (alpha_pad_noreturn): Do not emit an unop
between a call and its CALL_ARG_LOCATION note.

From-SVN: r171266

gcc/ChangeLog
gcc/config/alpha/alpha.c

index 669741c3c721c51f97ebe412c9b7de60156cd837..851ccfd3d7d311bb14fe07617fdc567875188000 100644 (file)
@@ -1,3 +1,8 @@
+2011-03-21  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/alpha/alpha.c (alpha_pad_noreturn): Do not emit an unop
+       between a call and its CALL_ARG_LOCATION note.
+
 2011-03-21  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gimplify.c (gimplify_vla_decl): Set TREE_THIS_NOTRAP flag.
        * config/sol2.h (CPP_SUBTARGET_SPEC): Remove -threads support.
        (LIB_SPEC): Likewise.
        * config/sol2.opt (threads): Remove.
-       * config.gcc (i[34567]86-*-solaris2*): Remove solaris threads
-       support.
+       * config.gcc (i[34567]86-*-solaris2*): Remove solaris threads support.
        (sparc*-*-solaris2*): Likewise.
        * configure.ac (enable_threads): Enable solaris support.
        * configure: Regenerate.
-       * doc/invoke.texi (Option Summary, Solaris 2 Options): Remove
-       -threads.
+       * doc/invoke.texi (Option Summary, Solaris 2 Options): Remove -threads.
        * doc/install.texi (Configuration, --enable-threads=lib): Remove
        solaris.
 
 2011-03-21  Kai Tietz  <ktietz@redhat.com>
 
        PR target/12171
-       * doc/plugins.texi: Adjust documentation
-       for plugin register_callback.
-       * tree.h (attribute_spec): Add new member
-       affects_type_identity.
-       - Zitierten Text anzeigen -
-       * attribs.c (empty_attribute_table): Adjust
-       attribute_spec initializers.
+       * doc/plugins.texi: Adjust documentation for plugin register_callback.
+       * tree.h (attribute_spec): Add new member affects_type_identity.
+       * attribs.c (empty_attribute_table): Adjust attribute_spec
+       initializers.
        * config/alpha/alpha.c: Likewise.
        * config/arc/arc.c: Likewise.
        * config/arm/arm.c: Likewise.
 2011-03-18  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
        * config/s390/s390.c (s390_chunkify_start): Prevent literal pool
-       splitting between a call and its corresponding CALL_ARG_LOCATION
-       note.
+       splitting between a call and its corresponding CALL_ARG_LOCATION note.
 
 2011-03-18  Maxim Kuvyrkov  <maxim@codesourcery.com>
 
 
 2011-03-08  Georg-Johann Lay  <avr@gjlay.de>
 
-       * config/avr/avr.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
-       * config/avr/avr.c (TARGET_REGISTER_MOVE_COST,
-       TARGET_MEMORY_MOVE_COST): Define.
-       (avr_register_move_cost, avr_memory_move_cost): New Functions.
+       * config/avr/avr.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
+       * config/avr/avr.c (TARGET_REGISTER_MOVE_COST)
+       (TARGET_MEMORY_MOVE_COST): Define.
+       (avr_register_move_cost, avr_memory_move_cost): New Functions.
 
 2011-03-08  Jakub Jelinek  <jakub@redhat.com>
 
index 78b4d1789e6f4baa8a48a3ee91cce0e83baac4e8..c9bafeb29031929f351a5fcea76988fec47532de 100644 (file)
@@ -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)