From: Bernd Edlinger Date: Sat, 23 Nov 2019 06:33:59 +0000 (+0000) Subject: re PR c++/92365 (ice unexpected expression ‘int16_t()’ of kind cast_expr) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=41149acaff5ccb046ebf8ac7ae6eadb147f6f6b8;p=gcc.git re PR c++/92365 (ice unexpected expression ‘int16_t()’ of kind cast_expr) PR c++/92365 2019-11-22 Bernd Edlinger PR c++/92365 * name-lookup.c (check_local_shadow): Use can_convert_arg instead of can_convert. testsuite: 2019-11-22 Bernd Edlinger PR c++/92365 * g++.dg/pr92365.C: New test. From-SVN: r278639 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 444b339fe57..33e2cfeede8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2019-11-23 Bernd Edlinger + + PR c++/92365 + * name-lookup.c (check_local_shadow): Use can_convert_arg + instead of can_convert. + 2019-11-22 Marek Polacek PR c++/88337 - P1327R1: Allow polymorphic typeid in constexpr. diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index b399b4ed39d..a298b61bda9 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -2769,8 +2769,8 @@ check_local_shadow (tree decl) (now) doing the shadow checking too early. */ && !type_uses_auto (TREE_TYPE (decl)) - && can_convert (TREE_TYPE (old), TREE_TYPE (decl), - tf_none))) + && can_convert_arg (TREE_TYPE (old), TREE_TYPE (decl), + decl, LOOKUP_IMPLICIT, tf_none))) warning_code = OPT_Wshadow_compatible_local; else warning_code = OPT_Wshadow_local; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1109cd65d05..c34573b04dc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-11-23 Bernd Edlinger + + PR c++/92365 + * g++.dg/pr92365.C: New test. + 2019-11-22 Marek Polacek PR c++/88337 - P1327R1: Allow polymorphic typeid in constexpr. diff --git a/gcc/testsuite/g++.dg/pr92365.C b/gcc/testsuite/g++.dg/pr92365.C new file mode 100644 index 00000000000..2cefd79c9b3 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr92365.C @@ -0,0 +1,12 @@ +/* PR c++/92365 */ +/* { dg-options "-std=c++98 -Wshadow=compatible-local" } */ + +class a { +public: + a(char *); +}; +void b() { + a c(0); + if (0) + int c; +}