Commit 85341ddd by Nathan Sidwell Committed by Nathan Sidwell

re PR c++/7640 (g++ 3.3 ICE: SEGV in integer_zerop)

.:	PR c++/7640
	* c-semantics.c (genrtl_do_stmt): Cope with NULL cond.
testsuite:
	* g++.dg/other/do1.C: New test.

From-SVN: r57212
parent 3ec83083
2002-09-16 Nathan Sidwell <nathan@codesourcery.com>
* c-semantics.c (genrtl_do_stmt): Cope with NULL cond.
2002-09-16 Geoffrey Keating <geoffk@redhat.com> 2002-09-16 Geoffrey Keating <geoffk@redhat.com>
* config/rs6000/rs6000.c (build_mask64_2_operands): Suppress * config/rs6000/rs6000.c (build_mask64_2_operands): Suppress
......
...@@ -447,8 +447,9 @@ genrtl_do_stmt (t) ...@@ -447,8 +447,9 @@ genrtl_do_stmt (t)
/* Recognize the common special-case of do { ... } while (0) and do /* Recognize the common special-case of do { ... } while (0) and do
not emit the loop widgetry in this case. In particular this not emit the loop widgetry in this case. In particular this
avoids cluttering the rtl with dummy loop notes, which can affect avoids cluttering the rtl with dummy loop notes, which can affect
alignment of adjacent labels. */ alignment of adjacent labels. COND can be NULL due to parse
if (integer_zerop (cond)) errors. */
if (!cond || integer_zerop (cond))
{ {
expand_start_null_loop (); expand_start_null_loop ();
expand_stmt (DO_BODY (t)); expand_stmt (DO_BODY (t));
......
2002-09-16 Nathan Sidwell <nathan@codesourcery.com> 2002-09-16 Nathan Sidwell <nathan@codesourcery.com>
* g++.dg/other/do1.C: New test.
* g++.dg/template/subst1.C: New test. * g++.dg/template/subst1.C: New test.
2002-09-16 Steve Ellcey <sje@cup.hp.com> 2002-09-16 Steve Ellcey <sje@cup.hp.com>
......
// { dg-do compile }
// Copyright (C) 2002 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 16 Sep 2002 <nathan@codesourcery.com>
// PR 7640. ICE.
void init ()
{
do { } while (0)
obj = 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment