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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.dg/] [c99-const-expr-2.c] - Blame information for rev 816

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 149 jeremybenn
/* Test for constant expressions: details of what is a null pointer
2
   constant.
3
*/
4
/* Origin: Joseph Myers <jsm28@cam.ac.uk> */
5
/* { dg-do compile } */
6
/* { dg-options "-std=iso9899:1999" } */
7
/* Note: not using -pedantic since the -std option alone should be enough
8
   to give the correct behavior to conforming programs.  If -pedantic is
9
   needed to make (say) (0, 0) not be a constant expression, this is a
10
   bug.
11
*/
12
 
13
int *a;
14
int b;
15
long *c;
16
 
17
#ifdef _LP64
18
#define ZERO 0L
19
#else
20
#define ZERO 0
21
#endif
22
 
23
/* Assertion that n is a null pointer constant: so the conditional expression
24
   has type 'int *' instead of 'void *'.
25
*/
26
#define ASSERT_NPC(n)   (b = *(1 ? a : (n)))
27
/* Assertion that n is not a null pointer constant: so the conditional
28
   expressions has type 'void *' instead of 'int *'.
29
*/
30
#define ASSERT_NOT_NPC(n)       (c = (1 ? a : (n)))
31
 
32
void
33
foo (void)
34
{
35
  ASSERT_NPC (0);
36
  ASSERT_NPC ((void *)0);
37
  ASSERT_NOT_NPC ((void *)(void *)0); /* { dg-bogus "incompatible" "bogus null pointer constant" { xfail *-*-* } } */
38
  ASSERT_NOT_NPC ((void *)(char *)0); /* { dg-bogus "incompatible" "bogus null pointer constant" { xfail *-*-* } } */
39
  ASSERT_NOT_NPC ((void *)(0, ZERO)); /* { dg-bogus "incompatible" "bogus null pointer constant" } */
40
  ASSERT_NOT_NPC ((void *)(&"Foobar"[0] - &"Foobar"[0])); /* { dg-bogus "incompatible" "bogus null pointer constant" { xfail *-*-* } } */
41
  /* This last one is a null pointer constant in C99 only.  */
42
  ASSERT_NPC ((void *)(1 ? 0 : (0, 0)));
43
}

powered by: WebSVN 2.1.0

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