1 /* PR middle-end/113982 */
2 /* { dg-do compile } */
3 /* { dg-options "-O2 -fdump-tree-widening_mul" } */
7 typedef unsigned long long T
;
9 typedef unsigned long long W
;
10 typedef unsigned int T
;
12 #define B __CHAR_BIT__ * sizeof (T)
14 struct S
{ int p
; T r
; };
20 return (struct S
) { z
>> B
, (T
) z
};
27 return (struct S
) { z
>> B
, (T
) z
};
31 baz (T x
, unsigned short y
)
34 return (struct S
) { z
>> B
, (T
) z
};
38 qux (unsigned short x
, T y
)
41 return (struct S
) { z
>> B
, (T
) z
};
49 return (struct S
) { z
>> B
, w
};
57 return (struct S
) { z
>> B
, w
};
60 /* { dg-final { scan-tree-dump-times "ADD_OVERFLOW" 6 "widening_mul" { target { i?86-*-* x86_64-*-* } } } } */