re PR c++/60872 (Cannot memcpy array of restricted pointers)

PR c++/60872
	* call.c (standard_conversion): Don't try to apply restrict to void.

From-SVN: r209520
This commit is contained in:
Jason Merrill 2014-04-18 14:11:22 -04:00 committed by Jason Merrill
parent 8a3a7e67a1
commit c663bc6a4f
3 changed files with 16 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2014-04-18 Jason Merrill <jason@redhat.com>
PR c++/60872
* call.c (standard_conversion): Don't try to apply restrict to void.
2014-04-16 Marc Glisse <marc.glisse@inria.fr>
* decl.c (reshape_init_r): Handle a single element of vector type.

View File

@ -1196,9 +1196,10 @@ standard_conversion (tree to, tree from, tree expr, bool c_cast_p,
&& TREE_CODE (TREE_TYPE (from)) != FUNCTION_TYPE)
{
tree nfrom = TREE_TYPE (from);
/* Don't try to apply restrict to void. */
int quals = cp_type_quals (nfrom) & ~TYPE_QUAL_RESTRICT;
from = build_pointer_type
(cp_build_qualified_type (void_type_node,
cp_type_quals (nfrom)));
(cp_build_qualified_type (void_type_node, quals));
conv = build_conv (ck_ptr, from, conv);
}
else if (TYPE_PTRDATAMEM_P (from))

View File

@ -0,0 +1,8 @@
// PR c++/60872
// { dg-options "" }
typedef double *__restrict T;
void f(T* p)
{
void *p2 = p;
}