Commit bf533db8 by Jakub Jelinek Committed by Jakub Jelinek

re PR c++/86738 (gcc 8.2: Internal compiler error memcpy)

	PR c++/86738
	* constexpr.c (cxx_eval_binary_expression): For arithmetics involving
	NULL pointer set *non_constant_p to true.
	(cxx_eval_component_reference): For dereferencing of a NULL pointer,
	set *non_constant_p to true and return t.

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

From-SVN: r263390
parent e75bc10e
2018-08-08 Jakub Jelinek <jakub@redhat.com>
PR c++/86738
* constexpr.c (cxx_eval_binary_expression): For arithmetics involving
NULL pointer set *non_constant_p to true.
(cxx_eval_component_reference): For dereferencing of a NULL pointer,
set *non_constant_p to true and return t.
2018-08-07 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/59480, DR 136
......
......@@ -2082,6 +2082,7 @@ cxx_eval_binary_expression (const constexpr_ctx *ctx, tree t,
{
if (!ctx->quiet)
error ("arithmetic involving a null pointer in %qE", lhs);
*non_constant_p = true;
return t;
}
else if (code == POINTER_PLUS_EXPR)
......@@ -2522,9 +2523,13 @@ cxx_eval_component_reference (const constexpr_ctx *ctx, tree t,
lval,
non_constant_p, overflow_p);
if (INDIRECT_REF_P (whole)
&& integer_zerop (TREE_OPERAND (whole, 0))
&& !ctx->quiet)
error ("dereferencing a null pointer in %qE", orig_whole);
&& integer_zerop (TREE_OPERAND (whole, 0)))
{
if (!ctx->quiet)
error ("dereferencing a null pointer in %qE", orig_whole);
*non_constant_p = true;
return t;
}
if (TREE_CODE (whole) == PTRMEM_CST)
whole = cplus_expand_constant (whole);
......
2018-08-08 Jakub Jelinek <jakub@redhat.com>
PR c++/86738
* g++.dg/opt/pr86738.C: New test.
2018-08-07 Richard Sandiford <richard.sandiford@arm.com>
PR target/86838
......
// PR c++/86738
// { dg-do compile }
struct S { int s; };
unsigned char a[20];
unsigned char *p = &a[(__UINTPTR_TYPE__) &((S *) 0)->s];
void
foo ()
{
__builtin_memcpy (&a[15], &a[(__UINTPTR_TYPE__) &((S *) 0)->s], 2);
}
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