re PR c++/6706 (ICE with variable-sized arrays and DWARF-1 output)

PR c++/6706
	* dwarfout.c (output_reg_number): Fix warning message.
	(output_bound_representation): Check SAVE_EXPR_RTL is not NULL
	before using it.

	PR c++/6706
	* g++.dg/debug/debug6.C: New test.
	* g++.dg/debug/debug7.C: New test.

From-SVN: r55263
This commit is contained in:
Mark Mitchell 2002-07-05 16:37:44 +00:00 committed by Mark Mitchell
parent ae05956113
commit 63a1d27cb5
5 changed files with 42 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2002-07-03 Mark Mitchell <mark@codesourcery.com>
PR c++/6706
* dwarfout.c (output_reg_number): Fix warning message.
(output_bound_representation): Check SAVE_EXPR_RTL is not NULL
before using it.
2002-07-03 Richard Henderson <rth@redhat.com>
* config/i386/i386.md (prologue_get_pc): Issue pop here ...

View File

@ -2086,7 +2086,8 @@ output_reg_number (rtl)
if (regno >= DWARF_FRAME_REGISTERS)
{
warning_with_decl (dwarf_last_decl, "internal regno botch: regno = %d\n",
warning_with_decl (dwarf_last_decl,
"internal regno botch: `%s' has regno = %d\n",
regno);
regno = 0;
}
@ -2303,7 +2304,8 @@ output_bound_representation (bound, dim_num, u_or_l)
|| TREE_CODE (bound) == CONVERT_EXPR)
bound = TREE_OPERAND (bound, 0);
if (TREE_CODE (bound) == SAVE_EXPR)
if (TREE_CODE (bound) == SAVE_EXPR
&& SAVE_EXPR_RTL (bound))
output_loc_descriptor
(eliminate_regs (SAVE_EXPR_RTL (bound), 0, NULL_RTX));
}

View File

@ -1,3 +1,9 @@
2002-07-03 Mark Mitchell <mark@codesourcery.com>
PR c++/6706
* g++.dg/debug/debug6.C: New test.
* g++.dg/debug/debug7.C: New test.
2002-07-03 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/6944

View File

@ -0,0 +1,7 @@
// { dg-do compile }
void foo()
{
int i=1, x[i];
}

View File

@ -0,0 +1,18 @@
// { dg-do compile }
void f (int);
int
main() {
int a = 4;
int b = 5;
int (*x)[b] = new int[a][b];
x[2][1] = 7;
for (int i = 0; i < a; ++i)
for (int j = 0; j < b; ++j)
f (x[i][j]);
delete [] x;
}