OSDN Git Service

2008-02-14 Andreas Krebbel <krebbel1@de.ibm.com>
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Feb 2008 08:40:40 +0000 (08:40 +0000)
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Feb 2008 08:40:40 +0000 (08:40 +0000)
* config/s390/s390.c (s390_mainpool_start): Emit the pool
before the first section switch note.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132315 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/s390/s390.c

index c0c6b6e..23d2bec 100644 (file)
@@ -1,3 +1,8 @@
+2008-02-14  Andreas Krebbel  <krebbel1@de.ibm.com>
+
+       * config/s390/s390.c (s390_mainpool_start): Emit the pool
+       before the first section switch note.
+
 2008-02-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
 
        * doc/bugreport.texi: Update copyright years.
index 2d90eef..280358c 100644 (file)
@@ -5683,7 +5683,6 @@ s390_mainpool_start (void)
 {
   struct constant_pool *pool;
   rtx insn;
-  bool in_pool_section_p = false;
 
   pool = s390_alloc_pool ();
 
@@ -5696,7 +5695,6 @@ s390_mainpool_start (void)
        {
          gcc_assert (!pool->pool_insn);
          pool->pool_insn = insn;
-         in_pool_section_p = true;
        }
 
       if (!TARGET_CPU_ZARCH && s390_execute_label (insn))
@@ -5722,12 +5720,9 @@ s390_mainpool_start (void)
         Z cpus where we can emit the literal pool at the end of the
         function body within the text section.  */
       if (NOTE_P (insn)
-         && NOTE_KIND (insn) == NOTE_INSN_SWITCH_TEXT_SECTIONS)
-       {
-         if (in_pool_section_p)
-           pool->emit_pool_after = PREV_INSN (insn);
-         in_pool_section_p = !in_pool_section_p;
-       }
+         && NOTE_KIND (insn) == NOTE_INSN_SWITCH_TEXT_SECTIONS
+         && !pool->emit_pool_after)
+       pool->emit_pool_after = PREV_INSN (insn);
     }
 
   gcc_assert (pool->pool_insn || pool->size == 0);
@@ -5744,7 +5739,7 @@ s390_mainpool_start (void)
 
   /* If the functions ends with the section where the literal pool
      should be emitted set the marker to its end.  */
-  if (pool && in_pool_section_p)
+  if (pool && !pool->emit_pool_after)
     pool->emit_pool_after = get_last_insn ();
 
   return pool;