This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[C++] code cleanup
- From: Nathan Sidwell <nathan at acm dot org>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 20 May 2016 17:01:01 -0400
- Subject: [C++] code cleanup
- Authentication-results: sourceware.org; auth=none
When working on the constexpr machinery for gcc 6, I noticed a couple of cleanup
opportunities.
1) cxx_bind_parameters_in_call contains 'if (cond) goto x; ... x:;', which can
easily be rewritten to 'if (!cond) { ...}'
2) a which vs that grammar error.
applied to trunk.
nathan
2016-05-20 Nathan Sidwell <nathan@acm.org>
* constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if
... goto.
(cxx_eval_call_expression): Fix comment grammar.
Index: cp/constexpr.c
===================================================================
--- cp/constexpr.c (revision 236510)
+++ cp/constexpr.c (working copy)
@@ -1201,18 +1201,18 @@ cxx_bind_parameters_in_call (const const
/* Just discard ellipsis args after checking their constantitude. */
if (!parms)
continue;
- if (*non_constant_p)
- /* Don't try to adjust the type of non-constant args. */
- goto next;
-
- /* Make sure the binding has the same type as the parm. */
- if (TREE_CODE (type) != REFERENCE_TYPE)
- arg = adjust_temp_type (type, arg);
- if (!TREE_CONSTANT (arg))
- *non_constant_args = true;
- *p = build_tree_list (parms, arg);
- p = &TREE_CHAIN (*p);
- next:
+
+ if (!*non_constant_p)
+ {
+ /* Make sure the binding has the same type as the parm. But
+ only for constant args. */
+ if (TREE_CODE (type) != REFERENCE_TYPE)
+ arg = adjust_temp_type (type, arg);
+ if (!TREE_CONSTANT (arg))
+ *non_constant_args = true;
+ *p = build_tree_list (parms, arg);
+ p = &TREE_CHAIN (*p);
+ }
parms = TREE_CHAIN (parms);
}
}
@@ -1420,7 +1420,7 @@ cxx_eval_call_expression (const constexp
*slot = entry = ggc_alloc<constexpr_call> ();
*entry = new_call;
}
- /* Calls which are in progress have their result set to NULL
+ /* Calls that are in progress have their result set to NULL,
so that we can detect circular dependencies. */
else if (entry->result == NULL)
{