summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@tuliptree.org>2004-02-19 01:24:29 +0000
committerJim Wilson <wilson@tuliptree.org>2004-02-19 01:24:29 +0000
commit03c30bb59025fb1931e7329fb757423b2affc805 (patch)
treee409780aa4efe38b6325b1986ad34b34616ec993
parent7cef18c882c88c5d8059404d2f920cd3901b25e1 (diff)
downloadbinutils-redhat-03c30bb59025fb1931e7329fb757423b2affc805.tar.gz
Yet another fix for -falign-loops problems.
* 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.
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-ia64.c30
2 files changed, 32 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 1a812ac41f..4f7b48f6d6 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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.
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index fe66ffa4ec..59cf5df9b9 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -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;