re PR tree-optimization/33291 (a+=2; a+=2 not simplified to a+=4; with -O3 ...
[gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / 20030807-5.c
1 /* { dg-do compile } */
2 /* { dg-options "-O1 -fdump-tree-dom3" } */
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 "dom3"} } */
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 "dom3"} } */
38
39 /* { dg-final { cleanup-tree-dump "dom3" } } */