OSDN Git Service

PR rtl-optimization/52139
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / tree-ssa / 20030807-5.c
1 /* { dg-do compile } */
2 /* { dg-options "-O1 -fdump-tree-dom2" } */
3
4 extern void abort (void);
5 struct rtx_def;
6 typedef struct rtx_def *rtx;
7
8
9 struct rtx_def
10 {
11
12   int code;
13   unsigned int unchanging:1;
14
15 };
16 static rtx current_sym_addr;
17
18 int
19 foo ()
20 {
21   if (current_sym_addr->code == 42
22       && (({
23                rtx _rtx = current_sym_addr;
24                if (((_rtx)->code) != 42)
25                  abort ();
26                _rtx;}
27            )->unchanging))
28     return 0;
29 }
30
31 /* There should be precisely one load of ->code.  If there is
32    more than, then the dominator optimizations failed.  */
33 /* { dg-final { scan-tree-dump-times "->code" 1 "dom2"} } */
34
35 /* There should be two IF statements.  One for 'current_sym_addr->code == 42'.
36    The other one for '(EXPR)->unchanging'.  */
37 /* { dg-final { scan-tree-dump-times "if " 2 "dom2"} } */
38
39 /* { dg-final { cleanup-tree-dump "dom2" } } */