merge with trunk @ 139506
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / 20030807-5.c
blob424b5583bb8ee6c2a7de4614d532b2a2c38d4996
1 /* { dg-do compile } */
2 /* { dg-options "-O1 -fdump-tree-dom2" } */
4 extern void abort (void);
5 struct rtx_def;
6 typedef struct rtx_def *rtx;
9 struct rtx_def
12 int code;
13 unsigned int unchanging:1;
16 static rtx current_sym_addr;
18 int
19 foo ()
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;
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"} } */
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"} } */
39 /* { dg-final { cleanup-tree-dump "dom2" } } */