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)12Cyc_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