re PR tree-optimization/33291 (a+=2; a+=2 not simplified to a+=4; with -O3 ...
[gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / 20030814-4.c
1 /* { dg-do compile } */
2 /* { dg-options "-O1 -fdump-tree-dom3 -fdump-tree-optimized" } */
3
4 extern void abort (void);
5 union tree_node;
6 typedef union tree_node *tree;
7 extern const char tree_code_type[];
8 struct tree_common
9 {
10 int code;
11 };
12 struct tree_decl
13 {
14 long pointer_alias_set;
15 };
16 union tree_node
17 {
18 struct tree_common common;
19 struct tree_decl decl;
20 };
21 long
22 blah (decl, set)
23 tree decl;
24 long set;
25 {
26 decl->decl.pointer_alias_set = set;
27 if (tree_code_type[decl->common.code] != 'd')
28 abort ();
29 record_alias_subset (decl->decl.pointer_alias_set);
30 if (set != -1)
31 set = 0;
32 return set;
33 }
34
35 /* There should be precisely one reference to pointer_alias_set. If there is
36 more than one, then the dominator optimizations failed. */
37 /* { dg-final { scan-tree-dump-times "pointer_alias_set" 1 "dom3"} } */
38 /* { dg-final { cleanup-tree-dump "dom3" } } */
39
40 /* The assignment set = -1 in the ELSE clause of the last IF
41 statement should be removed by the final cleanup phase. */
42 /* { dg-final { scan-tree-dump-times "set = -1" 0 "optimized"} } */
43 /* { dg-final { cleanup-tree-dump "optimized" } } */