Commit fc6a2c5d by Jakub Jelinek Committed by Jakub Jelinek

re PR target/65523 (ICE: in gimple_op, at gimple.h:2270 with -fcheck-pointer-bounds -mmpx)

	PR target/65523
	* tree-chkp.c (chkp_build_returned_bound): Ignore
	ERF_RETURNS_ARG calls if they have fewer than needed arguments.

	* gcc.target/i386/pr65523.c: New test.

From-SVN: r221606
parent 9804b0fb
2015-03-23 Jakub Jelinek <jakub@redhat.com>
PR target/65523
* tree-chkp.c (chkp_build_returned_bound): Ignore
ERF_RETURNS_ARG calls if they have fewer than needed arguments.
2015-03-23 Oleg Endo <olegendo@gcc.gnu.org>
PR target/65505
......
2015-03-23 Jakub Jelinek <jakub@redhat.com>
PR target/65523
* gcc.target/i386/pr65523.c: New test.
PR ipa/65475
* g++.dg/lto/pr65475_0.C: Use dg-lto-options instead of
dg-options.
......
/* PR target/65523 */
/* { dg-do compile } */
/* { dg-options "-fcheck-pointer-bounds -mmpx" } */
void *memmove ();
void *
bar ()
{
return memmove ();
}
......@@ -2153,6 +2153,7 @@ chkp_build_returned_bound (gcall *call)
tree bounds;
gimple stmt;
tree fndecl = gimple_call_fndecl (call);
unsigned int retflags;
/* To avoid fixing alloca expands in targets we handle
it separately. */
......@@ -2196,12 +2197,11 @@ chkp_build_returned_bound (gcall *call)
}
/* Do not use retbnd when returned bounds are equal to some
of passed bounds. */
else if (gimple_call_return_flags (call) & ERF_RETURNS_ARG)
else if (((retflags = gimple_call_return_flags (call)) & ERF_RETURNS_ARG)
&& (retflags & ERF_RETURN_ARG_MASK) < gimple_call_num_args (call))
{
gimple_stmt_iterator iter = gsi_for_stmt (call);
unsigned int retarg = 0, argno;
if (gimple_call_return_flags (call) & ERF_RETURNS_ARG)
retarg = gimple_call_return_flags (call) & ERF_RETURN_ARG_MASK;
unsigned int retarg = retflags & ERF_RETURN_ARG_MASK, argno;
if (gimple_call_with_bounds_p (call))
{
for (argno = 0; argno < gimple_call_num_args (call); argno++)
......
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