Yet another fix for -falign-loops problems.
authorJim Wilson <wilson@tuliptree.org>
Thu, 19 Feb 2004 01:24:29 +0000 (01:24 +0000)
committerJim Wilson <wilson@tuliptree.org>
Thu, 19 Feb 2004 01:24:29 +0000 (01:24 +0000)
* config/tc-ia64.c (ia64_flush_insns): In addition to prologue,
body, and endp, allow unwind records which do not have a "t"
(time/instruction) field.

gas/ChangeLog
gas/config/tc-ia64.c

index 1a812ac41f398cdffbe27ebcc1889bbaccb55640..4f7b48f6d65ba66ac1e7f74a14dd895516aaf7fd 100644 (file)
@@ -1,3 +1,9 @@
+2004-02-18  David Mosberger  <davidm@hpl.hp.com>
+
+       * config/tc-ia64.c (ia64_flush_insns): In addition to prologue,
+       body, and endp, allow unwind records which do not have a "t"
+       (time/instruction) field.
+
 2004-02-17  Petko Manolov  <petkan@nucleusys.com>
 
        * config/tc-arm.c (do_mav_dspsc_1): Correct offset of CRn.
index fe66ffa4ece37d0b0bad2f072a670b486a47baae..59cf5df9b9efd2bfe89dd98c139da5bb9b36d221 100644 (file)
@@ -1092,14 +1092,36 @@ ia64_flush_insns ()
      here.  Give an error for others.  */
   for (ptr = unwind.current_entry; ptr; ptr = ptr->next)
     {
-      if (ptr->r.type == prologue || ptr->r.type == prologue_gr
-         || ptr->r.type == body || ptr->r.type == endp)
+      switch (ptr->r.type)
        {
+       case prologue:
+       case prologue_gr:
+       case body:
+       case endp:
          ptr->slot_number = (unsigned long) frag_more (0);
          ptr->slot_frag = frag_now;
+         break;
+
+         /* Allow any record which doesn't have a "t" field (i.e.,
+            doesn't relate to a particular instruction).  */
+       case unwabi:
+       case br_gr:
+       case copy_state:
+       case fr_mem:
+       case frgr_mem:
+       case gr_gr:
+       case gr_mem:
+       case label_state:
+       case rp_br:
+       case spill_base:
+       case spill_mask:
+         /* nothing */
+         break;
+
+       default:
+         as_bad (_("Unwind directive not followed by an instruction."));
+         break;
        }
-      else
-       as_bad (_("Unwind directive not followed by an instruction."));
     }
   unwind.current_entry = NULL;