OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [va-arg-trap-1.c] - Diff between revs 297 and 338

Only display areas with differences | Details | Blame | View Log

Rev 297 Rev 338
/* Undefined behavior from a call to va_arg with a type other than
/* Undefined behavior from a call to va_arg with a type other than
   that of the argument passed (in particular, with a type such as
   that of the argument passed (in particular, with a type such as
   "float" that can never be the type of an argument passed through
   "float" that can never be the type of an argument passed through
   "...") does not appear until after the va_list expression is
   "...") does not appear until after the va_list expression is
   evaluated.  PR 38483.  */
   evaluated.  PR 38483.  */
/* Origin: Joseph Myers <joseph@codesourcery.com> */
/* Origin: Joseph Myers <joseph@codesourcery.com> */
 
 
#include <stdarg.h>
#include <stdarg.h>
 
 
extern void exit (int);
extern void exit (int);
extern void abort (void);
extern void abort (void);
 
 
va_list ap;
va_list ap;
float f;
float f;
 
 
va_list *
va_list *
foo (void)
foo (void)
{
{
  exit (0);
  exit (0);
  return &ap;
  return &ap;
}
}
 
 
void
void
bar (int i, ...)
bar (int i, ...)
{
{
  va_start (ap, i);
  va_start (ap, i);
  f = va_arg (*foo (), float);
  f = va_arg (*foo (), float);
  va_end (ap);
  va_end (ap);
}
}
 
 
int
int
main (void)
main (void)
{
{
  bar (1, 0);
  bar (1, 0);
  abort ();
  abort ();
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.