aboutsummaryrefslogtreecommitdiff
path: root/gas/config
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
commit9c59842f2a6340d2a121975cfb7420e860dff1e0 (patch)
tree358fb61ee5658447f100a54ef0b94cd74d9ffab1 /gas/config
parent42d9e3b9a7d3700d987fd239c30d87d5eecbbd12 (diff)
downloadgdb-9c59842f2a6340d2a121975cfb7420e860dff1e0.zip
gdb-9c59842f2a6340d2a121975cfb7420e860dff1e0.tar.gz
gdb-9c59842f2a6340d2a121975cfb7420e860dff1e0.tar.bz2
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.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-ia64.c30
1 files changed, 26 insertions, 4 deletions
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index fe66ffa..59cf5df 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;