diff options
author | John Carr <jfc@mit.edu> | 1998-10-01 16:47:41 +0000 |
---|---|---|
committer | John Carr <jfc@gcc.gnu.org> | 1998-10-01 16:47:41 +0000 |
commit | 913f68c116b7a079fb33937f5aaa927ccd1fbab0 (patch) | |
tree | d9bf3be339a2978253909ce15a9dede99fd49e66 /gcc/dwarf2out.c | |
parent | 3ce1534782482f0885a330a6b0aad2f84c80b135 (diff) | |
download | gcc-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.c | 20 |
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); } |