OSDN Git Service

PR rtl-optimization/52139
[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 extern void abort (void);
8 char *foo(char *p, char *q) {
9     int x = (p !=0) + (q != 0);
10     if (x==2)  return "a"; else return 0;
11 }
12 extern char *bar(char*, char*) __attribute__((noinline));
13 char *bar(char *first, char *last)
14 {
15    int y;
16    if (!first)  return last;
17    if (!last)   return first;
18    if (*first == 'a')
19      return foo(first, last);
20    return 0;
21 }
22 main() {
23    char *p = "a", *q = "b";
24    if (p)
25      if (bar(p,q))
26        return 0;
27    abort();
28 }