Commit 28af952a by Roger Sayle Committed by Roger Sayle

c-typeck.c (c_finish_loop): Improve initial implementations for loops whose…

c-typeck.c (c_finish_loop): Improve initial implementations for loops whose conditions are known at...


	* c-typeck.c (c_finish_loop): Improve initial implementations
	for loops whose conditions are known at compile-time.

From-SVN: r91750
parent 118f3b19
2004-12-05 Roger Sayle <roger@eyesopen.com>
* c-typeck.c (c_finish_loop): Improve initial implementations
for loops whose conditions are known at compile-time.
2004-12-05 Kazu Hirata <kazu@cs.umass.edu> 2004-12-05 Kazu Hirata <kazu@cs.umass.edu>
* builtins.c: Fix comment typos. * builtins.c: Fix comment typos.
......
...@@ -6659,10 +6659,17 @@ c_finish_loop (location_t start_locus, tree cond, tree incr, tree body, ...@@ -6659,10 +6659,17 @@ c_finish_loop (location_t start_locus, tree cond, tree incr, tree body,
{ {
tree entry = NULL, exit = NULL, t; tree entry = NULL, exit = NULL, t;
/* Detect do { ... } while (0) and don't generate loop construct. */ /* If the condition is zero don't generate a loop construct. */
if (cond && !cond_is_first && integer_zerop (cond)) if (cond && integer_zerop (cond))
cond = NULL; {
if (cond_is_first || cond) if (cond_is_first)
{
t = build_and_jump (&blab);
SET_EXPR_LOCATION (t, start_locus);
add_stmt (t);
}
}
else
{ {
tree top = build1 (LABEL_EXPR, void_type_node, NULL_TREE); tree top = build1 (LABEL_EXPR, void_type_node, NULL_TREE);
...@@ -6671,7 +6678,7 @@ c_finish_loop (location_t start_locus, tree cond, tree incr, tree body, ...@@ -6671,7 +6678,7 @@ c_finish_loop (location_t start_locus, tree cond, tree incr, tree body,
then we just build a jump back to the top. */ then we just build a jump back to the top. */
exit = build_and_jump (&LABEL_EXPR_LABEL (top)); exit = build_and_jump (&LABEL_EXPR_LABEL (top));
if (cond) if (cond && !integer_nonzerop (cond))
{ {
/* Canonicalize the loop condition to the end. This means /* Canonicalize the loop condition to the end. This means
generating a branch to the loop condition. Reuse the generating a branch to the loop condition. Reuse the
......
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