This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
expand_builtin_init_dwarf_reg_sizes and test failures
- To: Jason Merrill <jason at cygnus dot com>
- Subject: expand_builtin_init_dwarf_reg_sizes and test failures
- From: Mark Mitchell <mark at codesourcery dot com>
- Date: Sun, 16 Jul 2000 12:52:11 -0700
- Cc: gcc at gcc dot gnu dot org
- Organization: CodeSourcery, LLC
Jason --
I'm seeing a bunch of new test failures on i686-pc-linux, all
involving exception handling. On poking around, I see that
expand_builtin_init_dwarf_reg_sizes changed on 2000-07-14, but there
doesn't seem to be any ChangeLog entry.
The problem was that we were not writing more information that there
is space in the table; dwarf_reg_size_table contains only
DWARF_FRAME_REGISTERS slots, but we were trying to write
FIRST_PSEUDO_REGISTER entries. I'm bootstrapping with the attached
patch, which seemed to cure the problem, but I'm a little unclear on
what's going on here. I'll go ahead and check this in if a) it works,
and b) I don't hear otherwise, but you should definitely review for
sanity.
My confusion was increased by the fact that DWARF_FRAME_REGISTERS is
not documented in the TeXinfo documentation; would you mind updating
it, since you can probably write the best documentation for it?
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com
Index: dwarf2out.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/dwarf2out.c,v
retrieving revision 1.184
diff -c -p -r1.184 dwarf2out.c
*** dwarf2out.c 2000/07/14 17:40:38 1.184
--- dwarf2out.c 2000/07/16 19:46:38
*************** expand_builtin_init_dwarf_reg_sizes (add
*** 626,632 ****
rtx addr = expand_expr (address, NULL_RTX, VOIDmode, 0);
rtx mem = gen_rtx_MEM (mode, addr);
! i = MAX (FIRST_PSEUDO_REGISTER, DWARF_FRAME_REGISTERS);
while (i--)
{
int offset = DWARF_FRAME_REGNUM (i) * GET_MODE_SIZE (mode);
--- 626,632 ----
rtx addr = expand_expr (address, NULL_RTX, VOIDmode, 0);
rtx mem = gen_rtx_MEM (mode, addr);
! i = MIN (FIRST_PSEUDO_REGISTER, DWARF_FRAME_REGISTERS);
while (i--)
{
int offset = DWARF_FRAME_REGNUM (i) * GET_MODE_SIZE (mode);