aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/parser.c')
-rw-r--r--gcc/cp/parser.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 735d592..01d6dba 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -3506,6 +3506,7 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p)
case CPP_OPEN_PAREN:
/* postfix-expression ( expression-list [opt] ) */
{
+ bool koenig_p;
tree args = (cp_parser_parenthesized_expression_list
(parser, false, /*non_constant_p=*/NULL));
@@ -3524,14 +3525,18 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p)
parser->non_constant_expression_p = true;
}
+ koenig_p = false;
if (idk == CP_ID_KIND_UNQUALIFIED)
{
if (args
&& (is_overloaded_fn (postfix_expression)
|| DECL_P (postfix_expression)
|| TREE_CODE (postfix_expression) == IDENTIFIER_NODE))
- postfix_expression
- = perform_koenig_lookup (postfix_expression, args);
+ {
+ koenig_p = true;
+ postfix_expression
+ = perform_koenig_lookup (postfix_expression, args);
+ }
else if (TREE_CODE (postfix_expression) == IDENTIFIER_NODE)
postfix_expression
= unqualified_fn_lookup_error (postfix_expression);
@@ -3570,12 +3575,14 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p)
function. */
postfix_expression
= finish_call_expr (postfix_expression, args,
- /*disallow_virtual=*/true);
+ /*disallow_virtual=*/true,
+ koenig_p);
else
/* All other function calls. */
postfix_expression
= finish_call_expr (postfix_expression, args,
- /*disallow_virtual=*/false);
+ /*disallow_virtual=*/false,
+ koenig_p);
/* The POSTFIX_EXPRESSION is certainly no longer an id. */
idk = CP_ID_KIND_NONE;