diff options
author | Marek Polacek <polacek@redhat.com> | 2014-09-13 07:54:40 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2014-09-13 07:54:40 +0000 |
commit | 05f30b866f8d44acabc08dcd045712afc40445a4 (patch) | |
tree | 17326c712eb505db3635924cd333a33d82c7c86f | |
parent | 8909b58efa79468e797edd18139af98c72dd1e64 (diff) | |
download | gcc-05f30b866f8d44acabc08dcd045712afc40445a4.zip gcc-05f30b866f8d44acabc08dcd045712afc40445a4.tar.gz gcc-05f30b866f8d44acabc08dcd045712afc40445a4.tar.bz2 |
re PR c++/60862 (bad location in invalid conversion error)
PR c++/60862
* parser.c (cp_parser_postfix_expression) <case CPP_OPEN_PAREN>: Set
location of a call expression.
* g++.dg/diagnostic/pr60862.C: New test.
From-SVN: r215235
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/diagnostic/pr60862.C | 10 |
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3e9cb89..ff72fd0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2014-09-13 Marek Polacek <polacek@redhat.com> + + PR c++/60862 + * parser.c (cp_parser_postfix_expression) <case CPP_OPEN_PAREN>: Set + location of a call expression. + 2014-09-11 Jason Merrill <jason@redhat.com> PR c++/63201 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index c696fd2..a3c947a 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -6227,6 +6227,8 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p, koenig_p, complain); + protected_set_expr_location (postfix_expression, token->location); + /* The POSTFIX_EXPRESSION is certainly no longer an id. */ idk = CP_ID_KIND_NONE; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 20defa5..29d89a8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-09-13 Marek Polacek <polacek@redhat.com> + + PR c++/60862 + * g++.dg/diagnostic/pr60862.C: New test. + 2014-09-12 Richard Biener <rguenther@suse.de> PR middle-end/63237 diff --git a/gcc/testsuite/g++.dg/diagnostic/pr60862.C b/gcc/testsuite/g++.dg/diagnostic/pr60862.C new file mode 100644 index 0000000..cc5279c --- /dev/null +++ b/gcc/testsuite/g++.dg/diagnostic/pr60862.C @@ -0,0 +1,10 @@ +// PR c++/60862 +// { dg-do compile } + +extern void **bar (int, void *, int); + +void +foo (int x, int y) +{ + int **s = bar (x, &x, y); // { dg-error "17:invalid conversion" } +} |