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
This commit is contained in:
parent
d718b7aae7
commit
e88e0907bd
|
@ -1,3 +1,9 @@
|
|||
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);
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
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
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
/* { 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);
|
||||
}
|
Loading…
Reference in New Issue