From: Marek Polacek Date: Tue, 13 May 2014 17:41:12 +0000 (+0000) Subject: re PR c/61162 (possibly bad error location with -Wc++-compat) X-Git-Tag: upstream/12.2.0~63312 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2b107f6b91d1b44ec60bd5ce8b51218a84aac98a;p=platform%2Fupstream%2Fgcc.git re PR c/61162 (possibly bad error location with -Wc++-compat) PR c/61162 * c-typeck.c (convert_for_assignment): Pass location to WARN_FOR_ASSIGNMENT instead of input_location. * gcc.dg/pr61162.c: New test. From-SVN: r210393 --- diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 919b4ff..7b7d665 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,9 @@ +2014-05-13 Marek Polacek + + PR c/61162 + * c-typeck.c (convert_for_assignment): Pass location to + WARN_FOR_ASSIGNMENT instead of input_location. + 2014-05-10 Marek Polacek * c-parser.c (c_parser_declaration_or_fndef): Pass init_loc to diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index 4b1fe66..6f4bd4a 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -5754,7 +5754,7 @@ convert_for_assignment (location_t location, location_t expr_loc, tree type, && TREE_CODE (type) == ENUMERAL_TYPE && TYPE_MAIN_VARIANT (checktype) != TYPE_MAIN_VARIANT (type)) { - WARN_FOR_ASSIGNMENT (input_location, OPT_Wc___compat, + WARN_FOR_ASSIGNMENT (location, OPT_Wc___compat, G_("enum conversion when passing argument " "%d of %qE is invalid in C++"), G_("enum conversion in assignment is " diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 98a6505..54d483f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2014-05-13 Marek Polacek + PR c/61162 + * gcc.dg/pr61162.c: New test. + +2014-05-13 Marek Polacek + * c-c++-common/pr50459.c: Move cdtor tests to a separate testcase. * c-c++-common/pr50459-2.c: New test. diff --git a/gcc/testsuite/gcc.dg/pr61162.c b/gcc/testsuite/gcc.dg/pr61162.c new file mode 100644 index 0000000..00e64b9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr61162.c @@ -0,0 +1,12 @@ +/* PR c/61162 */ +/* { dg-do compile } */ +/* { dg-options "-Wc++-compat" } */ + +enum e { A }; +enum e +fn1 (void) +{ + enum e e, q = 0; /* { dg-warning "17:enum conversion in initialization is invalid" } */ + e = 0; /* { dg-warning "5:enum conversion in assignment is invalid" } */ + 1; return 0; /* { dg-warning "6:enum conversion in return is invalid" } */ +}