Tiny patch, just use available location instead of input_location. Tested x86_64. Ok?
2014-05-13 Marek Polacek <pola...@redhat.com> 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. diff --git gcc/c/c-typeck.c gcc/c/c-typeck.c index 4b1fe66..6f4bd4a 100644 --- gcc/c/c-typeck.c +++ 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 gcc/testsuite/gcc.dg/pr61162.c gcc/testsuite/gcc.dg/pr61162.c index e69de29..00e64b9 100644 --- gcc/testsuite/gcc.dg/pr61162.c +++ 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" } */ +} Marek