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
Cyc_string_ungetc(int ignore,struct _fat_ptr * sptr)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*-*-*" } } } } */
40