===================================================================
@@ -882,21 +882,13 @@ finish_for_expr (tree expr, tree for_stmt)
void
finish_for_stmt (tree for_stmt)
{
- bool scoped;
-
if (TREE_CODE (for_stmt) == RANGE_FOR_STMT)
- {
RANGE_FOR_BODY (for_stmt) = do_poplevel (RANGE_FOR_BODY (for_stmt));
- scoped = true;
- }
else
- {
FOR_BODY (for_stmt) = do_poplevel (FOR_BODY (for_stmt));
- scoped = flag_new_for_scope > 0;
- }
/* Pop the scope for the body of the loop. */
- if (scoped)
+ if (flag_new_for_scope > 0)
{
tree scope = TREE_CHAIN (for_stmt);
TREE_CHAIN (for_stmt) = NULL;
@@ -913,11 +905,13 @@ tree
begin_range_for_stmt (void)
{
tree r;
+
r = build_stmt (input_location, RANGE_FOR_STMT,
NULL_TREE, NULL_TREE, NULL_TREE);
- /* We can ignore flag_new_for_scope here. */
- TREE_CHAIN (r) = do_pushlevel (sk_for);
+ if (flag_new_for_scope > 0)
+ TREE_CHAIN (r) = do_pushlevel (sk_for);
+
return r;
}
> OK, makes sense. Here it is. Quite simple, actually. Thank you for your help. Rodrigo. -- Changelog: gcc/cp/ 2010-09-12 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com> * semantics.c (finish_for_stmt): Always test flag_new_for_scope. (begin_range_for_stmt): Likewise.