OSDN Git Service

6987e17d907d04a1d99b41337a130245da51e127
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / tree-ssa / 20040121-1.c
1
2
3 /* Test that (p!=0) + (q!=0) is computed as int,
4     not boolean */
5 /* { dg-options "-O3" } */
6 /* { dg-do run } */
7 char *foo(char *p, char *q) {
8     int x = (p !=0) + (q != 0);
9     if (x==2)  return "a"; else return 0;
10 }
11 extern char *bar(char*, char*) __attribute__((noinline));
12 char *bar(char *first, char *last)
13 {
14    int y;
15    if (!first)  return last;
16    if (!last)   return first;
17    if (*first == 'a')
18      return foo(first, last);
19    return 0;
20 }
21 main() {
22    char *p = "a", *q = "b";
23    if (p)
24      if (bar(p,q))
25        return 0;
26    abort();
27 }