Commit d6951cae by Jan Hubicka Committed by Jan Hubicka

re PR target/34982 (calling a function with undefined parameters causes…

re PR target/34982 (calling a function with undefined parameters causes segmentation fault at -O1 or higher)


	PR target/34982
	* i386.c (init_cumulative_args): Use real function declaration when
	calling locally.

From-SVN: r131966
parent 7f92e242
2008-01-30 Jan Hubicka <jh@suse.cz>
PR target/34982
* i386.c (init_cumulative_args): Use real function declaration when
calling locally.
2008-01-30 Richard Sandiford <rsandifo@nildram.co.uk>
PR rtl-optimization/34998
......
......@@ -3432,6 +3432,7 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, /* Argument info to initialize */
rtx libname, /* SYMBOL_REF of library name or 0 */
tree fndecl)
{
struct cgraph_local_info *i = fndecl ? cgraph_local_info (fndecl) : NULL;
memset (cum, 0, sizeof (*cum));
/* Set up the number of registers to use for passing arguments. */
......@@ -3442,6 +3443,15 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, /* Argument info to initialize */
cum->mmx_nregs = MMX_REGPARM_MAX;
cum->warn_sse = true;
cum->warn_mmx = true;
/* Because type might mismatch in between caller and callee, we need to
use actual type of function for local calls.
FIXME: cgraph_analyze can be told to actually record if function uses
va_start so for local functions maybe_vaarg can be made aggressive
helping K&R code.
FIXME: once typesytem is fixed, we won't need this code anymore. */
if (i && i->local)
fntype = TREE_TYPE (fndecl);
cum->maybe_vaarg = (fntype
? (!prototype_p (fntype) || stdarg_p (fntype))
: !libname);
......
2008-01-30 Jan Hubicka <jh@suse.cz>
PR target/34982
* gcc.c-torture/execute/pr34982.c: New testcase
2008-01-30 Andreas Krebbel <krebbel1@de.ibm.com>
* gcc.target/s390/tf_to_di-1.c: New testcase.
extern void abort (void);
static void something();
int main()
{
something(-1);
}
static void something(int i)
{
if (i != -1)
abort ();
}
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