111
|
1 /* { dg-do compile } */
|
|
2 /* { dg-options "-O1 -fdump-tree-optimized" } */
|
|
3
|
|
4 struct _fat_ptr
|
|
5 {
|
|
6 unsigned char *curr;
|
|
7 unsigned char *base;
|
|
8 unsigned char *last_plus_one;
|
|
9 };
|
|
10 int Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr);
|
|
11 int
|
|
12 Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr)
|
|
13 {
|
|
14 struct _fat_ptr *_T0;
|
|
15 struct _fat_ptr *_T1;
|
|
16 struct _fat_ptr _T2;
|
|
17 int _T3;
|
|
18 struct _fat_ptr _ans;
|
|
19 int _change;
|
|
20
|
|
21 {
|
|
22 _T0 = sptr;
|
|
23 _T1 = sptr;
|
|
24 _T2 = *sptr;
|
|
25 _T3 = -1;
|
|
26 _ans = _T2;
|
|
27 _change = -1;
|
|
28 _ans.curr += 4294967295U;
|
|
29 *sptr = _ans;
|
|
30 return (0);
|
|
31 }
|
|
32 }
|
|
33
|
|
34 /* The local aggregates . */
|
|
35 /* Whether the structs are totally scalarized or not depends on the
|
|
36 MOVE_RATIO macro definition in the back end. The scalarization will
|
|
37 not take place when using small values for MOVE_RATIO. */
|
|
38 /* { dg-final { scan-tree-dump-times "struct _fat_ptr _ans" 0 "optimized" { target { ! "aarch64*-*-* alpha*-*-* arm*-*-* avr-*-* nds32*-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */
|
|
39 /* { dg-final { scan-tree-dump-times "struct _fat_ptr _T2" 0 "optimized" { target { ! "aarch64*-*-* alpha*-*-* arm*-*-* avr-*-* nds32*-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */
|