Commit 1ec7a978 by Richard Henderson Committed by Richard Henderson

re PR c/16348 (Loop gets executed when it shouldnt)

        PR c/16348
        * c-typeck.c (c_finish_loop): Don't clear cond for cond_is_first loops.

From-SVN: r84089
parent 343a6100
2004-07-04 Richard Henderson <rth@redhat.com>
PR c/16348
* c-typeck.c (c_finish_loop): Don't clear cond for cond_is_first loops.
2004-07-04 Mark Mitchell <mark@codesourcery.com>
* configure.ac (ranlib_flags): New variable.
......
......@@ -6554,11 +6554,9 @@ c_finish_loop (location_t start_locus, tree cond, tree incr, tree body,
{
tree entry = NULL, exit = NULL, t;
/* Force zeros to NULL so that we don't test them. */
if (cond && integer_zerop (cond))
cond = NULL;
/* Detect do { ... } while (0) and don't generate loop construct. */
if (cond && !cond_is_first && integer_zerop (cond))
cond = NULL;
if (cond_is_first || cond)
{
tree top = build1 (LABEL_EXPR, void_type_node, NULL_TREE);
......
/* PR 16348: Make sure that condition-first false loops DTRT. */
extern void abort ();
int main()
{
for (; 0 ;)
{
abort ();
label:
return 0;
}
goto label;
}
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