aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorJohn Carr <jfc@mit.edu>1998-10-01 16:47:41 +0000
committerJohn Carr <jfc@gcc.gnu.org>1998-10-01 16:47:41 +0000
commit913f68c116b7a079fb33937f5aaa927ccd1fbab0 (patch)
treed9bf3be339a2978253909ce15a9dede99fd49e66 /gcc/dwarf2out.c
parent3ce1534782482f0885a330a6b0aad2f84c80b135 (diff)
downloadgcc-913f68c116b7a079fb33937f5aaa927ccd1fbab0.zip
gcc-913f68c116b7a079fb33937f5aaa927ccd1fbab0.tar.gz
gcc-913f68c116b7a079fb33937f5aaa927ccd1fbab0.tar.bz2
dwarf2out.c (expand_builtin_dwarf_reg_size): Fix to work with more than three size ranges.
* dwarf2out.c (expand_builtin_dwarf_reg_size): Fix to work with more than three size ranges. * flow.c (sbitmap_copy): Use bcopy to copy bitmap. * rtl.c (mode_name): Add a null string at the end of the array. (mode_wider_mode): Change type to unsigned char. (mode_mask_array): New variable. (init_rtl): Update for mode_wider_mode type change. * rtl.h (mode_wider_mode): Change type to unsigned char. (mode_mask_array): Declare. (GET_MODE_MASK): Use mode_mask_array. From-SVN: r22717
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index d768320..9826c38 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -642,24 +642,26 @@ expand_builtin_dwarf_reg_size (reg_tree, target)
}
else
{
+ int last_end = 100;
--n_ranges;
t = build_int_2 (ranges[n_ranges].size, 0);
- size = DWARF_FRAME_REGNUM (ranges[n_ranges].beg);
- for (; n_ranges--; )
+ do
{
- if ((DWARF_FRAME_REGNUM (ranges[n_ranges].end)
- - DWARF_FRAME_REGNUM (ranges[n_ranges].beg))
- != ranges[n_ranges].end - ranges[n_ranges].beg)
+ int beg = DWARF_FRAME_REGNUM (ranges[n_ranges].beg);
+ int end = DWARF_FRAME_REGNUM (ranges[n_ranges].end);
+ if (beg < 0)
+ continue;
+ if (end >= last_end)
abort ();
- if (DWARF_FRAME_REGNUM (ranges[n_ranges].beg) >= size)
+ last_end = end;
+ if (end - beg != ranges[n_ranges].end - ranges[n_ranges].beg)
abort ();
- size = DWARF_FRAME_REGNUM (ranges[n_ranges].beg);
t2 = fold (build (LE_EXPR, integer_type_node, reg_tree,
- build_int_2 (DWARF_FRAME_REGNUM
- (ranges[n_ranges].end), 0)));
+ build_int_2 (end, 0)));
t = fold (build (COND_EXPR, integer_type_node, t2,
build_int_2 (ranges[n_ranges].size, 0), t));
}
+ while (--n_ranges > 0);
}
return expand_expr (t, target, Pmode, 0);
}