Commit c60dc053 by Jakub Jelinek Committed by Jakub Jelinek

re PR c++/80984 (ICE with label/variable ambiguity)

	PR c++/80984
	* cp-gimplify.c (cp_genericize): Only look for VAR_DECLs in
	BLOCK_VARS (outer) chain.
	(cxx_omp_const_qual_no_mutable): Likewise.

	* g++.dg/opt/nrv18.C: New test.

From-SVN: r249173
parent e2fea931
2017-06-13 Jakub Jelinek <jakub@redhat.com>
PR c++/80984
* cp-gimplify.c (cp_genericize): Only look for VAR_DECLs in
BLOCK_VARS (outer) chain.
(cxx_omp_const_qual_no_mutable): Likewise.
2017-06-13 Martin Liska <mliska@suse.cz>
PR sanitize/78204
......
......@@ -1590,7 +1590,8 @@ cp_genericize (tree fndecl)
if (outer)
for (var = BLOCK_VARS (outer); var; var = DECL_CHAIN (var))
if (DECL_NAME (t) == DECL_NAME (var)
if (VAR_P (var)
&& DECL_NAME (t) == DECL_NAME (var)
&& DECL_HAS_VALUE_EXPR_P (var)
&& DECL_VALUE_EXPR (var) == t)
{
......@@ -1836,7 +1837,8 @@ cxx_omp_const_qual_no_mutable (tree decl)
if (outer)
for (var = BLOCK_VARS (outer); var; var = DECL_CHAIN (var))
if (DECL_NAME (decl) == DECL_NAME (var)
if (VAR_P (var)
&& DECL_NAME (decl) == DECL_NAME (var)
&& (TYPE_MAIN_VARIANT (type)
== TYPE_MAIN_VARIANT (TREE_TYPE (var))))
{
......
2017-06-13 Jakub Jelinek <jakub@redhat.com>
PR c++/80984
* g++.dg/opt/nrv18.C: New test.
2017-06-13 Martin Liska <mliska@suse.cz>
PR sanitize/78204
......
// PR c++/80984
// { dg-do compile }
struct A { ~A (); };
A
foo ()
{
A a;
a:
return a;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment