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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.dg/] [pr30457.c] - Blame information for rev 298

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 298 jeremybenn
/* PR 30457 warn about va_start(ap, invalid) */
2
/* { dg-do compile } */
3
/* { dg-options "-std=c99" } */
4
 
5
/* Undefined by C99 7.15.1.4p4 (va_start):
6
   "If the parameter parmN is declared with the register storage
7
    class, with a function or array type, or with a type that is
8
    not compatible with the type that results after application of
9
    the default argument promotions, the behavior is undefined."  */
10
 
11
#include <stdarg.h>
12
 
13
void foo(register short paramN, ...)
14
{
15
  va_list ap;
16
 
17
  va_start(ap, paramN); /* { dg-warning "undefined behaviour when second parameter of 'va_start' is declared with 'register' storage" } */
18
 
19
  /* Undefined by C99 7.15.1.1p2:  */
20
  (void) va_arg(ap, char); /* { dg-warning "'char' is promoted to 'int' when passed through '...'" } */
21
  /* { dg-message "note: .so you should pass .int. not .char. to .va_arg.." "" { target *-*-* } 20 } */
22
  /* { dg-message "note: if this code is reached, the program will abort"  "" { target *-*-* } 20 } */
23
 
24
  va_end(ap);
25
}
26
 

powered by: WebSVN 2.1.0

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