Commit e88e0907 by J"orn Rennecke Committed by Joern Rennecke

re PR tree-optimization/16876 (ICE on testcase with -O3 in fold-const)

gcc:
	PR tree-optimization/16876
	* c-typeck.c (c_convert_parm_for_inlining): Don't take early
	exit if PARM doesn't match VALUE.

testsuite:
	gcc.dg/noncompile/pr16876.c: New test.

From-SVN: r116424
parent d718b7aa
2006-08-25 J"orn Rennecke <joern.rennecke@st.com>
PR tree-optimization/16876
* c-typeck.c (c_convert_parm_for_inlining): Don't take early
exit if PARM doesn't match VALUE.
2006-08-25 Bob Wilson <bob.wilson@acm.org>
* config/xtensa/xtensa.h (ASM_OUTPUT_POOL_PROLOGUE): Do not emit a
......
......@@ -4243,7 +4243,7 @@ convert_for_assignment (tree type, tree rhs, enum impl_conv errtype,
}
/* Convert VALUE for assignment into inlined parameter PARM. ARGNUM
is used for error and waring reporting and indicates which argument
is used for error and warning reporting and indicates which argument
is being processed. */
tree
......@@ -4251,9 +4251,15 @@ c_convert_parm_for_inlining (tree parm, tree value, tree fn, int argnum)
{
tree ret, type;
/* If FN was prototyped, the value has been converted already
in convert_arguments. */
if (!value || TYPE_ARG_TYPES (TREE_TYPE (fn)))
/* If FN was prototyped at the call site, the value has been converted
already in convert_arguments.
However, we might see a prototype now that was not in place when
the function call was seen, so check that the VALUE actually matches
PARM before taking an early exit. */
if (!value
|| (TYPE_ARG_TYPES (TREE_TYPE (fn))
&& (TYPE_MAIN_VARIANT (TREE_TYPE (parm))
== TYPE_MAIN_VARIANT (TREE_TYPE (value)))))
return value;
type = TREE_TYPE (parm);
......
2006-08-25 J"orn Rennecke <joern.rennecke@st.com>
gcc.dg/noncompile/pr16876.c: New test.
2006-08-25 Mark Mitchell <mark@codesourcery.com>
PR c++/28056
/* { dg-options "-O -finline-functions" } */
static void g();
struct bigstack {
char space[4096];
};
void f() {
g(0); /* { dg-error "incompatible type for argument 1 of 'g'" } */
}
static void g(struct bigstack bstack) {
g(bstack);
}
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