diff options
Diffstat (limited to 'gcc/cp/semantics.c')
-rw-r--r-- | gcc/cp/semantics.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 337b637..0183239 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -1987,7 +1987,15 @@ finish_call_expr (tree fn, tree args, bool disallow_virtual, bool koenig_p, if (TREE_CODE (fn) == FUNCTION_DECL && (DECL_BUILT_IN_CLASS (fn) == BUILT_IN_NORMAL || DECL_BUILT_IN_CLASS (fn) == BUILT_IN_MD)) - result = resolve_overloaded_builtin (fn, args); + { + VEC(tree,gc)* vec = VEC_alloc (tree, gc, list_length (args)); + tree p; + + for (p = args; p != NULL_TREE; p = TREE_CHAIN (p)) + VEC_quick_push (tree, vec, TREE_VALUE (p)); + result = resolve_overloaded_builtin (fn, vec); + VEC_free (tree, gc, vec); + } if (!result) /* A call to a namespace-scope function. */ @@ -4121,7 +4129,7 @@ handle_omp_for_class_iterator (int i, location_t locus, tree declv, tree initv, cond = cp_build_binary_op (elocus, TREE_CODE (cond), decl, diff, tf_warning_or_error); - incr = build_modify_expr (elocus, decl, PLUS_EXPR, incr); + incr = build_modify_expr (elocus, decl, PLUS_EXPR, incr, NULL_TREE); orig_body = *body; *body = push_stmt_list (); |