1 /* { dg-do compile } */
2 /* { dg-options "-std=gnu99" } */
4 /* Check if GCC generates warnings when overflows for mul and div. */
6 short _Fract sf0
= __SFRACT_MIN__
* __SFRACT_MIN__
; /* { dg-warning "overflow" } */
7 _Fract f0
= __FRACT_MIN__
* __FRACT_MIN__
; /* { dg-warning "overflow" } */
8 long _Fract lf0
= __LFRACT_MIN__
* __LFRACT_MIN__
; /* { dg-warning "overflow" } */
9 long long _Fract llf0
= __LLFRACT_MIN__
* __LLFRACT_MIN__
; /* { dg-warning "overflow" } */
10 short _Fract sf1
= __SFRACT_MAX__
* __SFRACT_MIN__
;
11 _Fract f1
= __FRACT_MAX__
* __FRACT_MIN__
;
12 long _Fract lf1
= __LFRACT_MAX__
* __LFRACT_MIN__
;
13 long long _Fract llf1
= __LLFRACT_MAX__
* __LLFRACT_MIN__
;
14 short _Fract sf2
= __SFRACT_MIN__
/ __SFRACT_MIN__
; /* { dg-warning "overflow" } */
15 _Fract f2
= __FRACT_MIN__
/ __FRACT_MIN__
; /* { dg-warning "overflow" } */
16 long _Fract lf2
= __LFRACT_MIN__
/ __LFRACT_MIN__
; /* { dg-warning "overflow" } */
17 long long _Fract llf2
= __LLFRACT_MIN__
/ __LLFRACT_MIN__
; /* { dg-warning "overflow" } */
18 short _Fract sf3
= __SFRACT_MAX__
/ __SFRACT_MIN__
;
19 _Fract f3
= __FRACT_MAX__
/ __FRACT_MIN__
;
20 long _Fract lf3
= __LFRACT_MAX__
/ __LFRACT_MIN__
;
21 long long _Fract llf3
= __LLFRACT_MAX__
/ __LLFRACT_MIN__
;
23 unsigned short _Fract usf0
= __USFRACT_MIN__
* __USFRACT_MIN__
;
24 unsigned _Fract uf0
= __UFRACT_MIN__
* __UFRACT_MIN__
;
25 unsigned long _Fract ulf0
= __ULFRACT_MIN__
* __ULFRACT_MIN__
;
26 unsigned long long _Fract ullf0
= __ULLFRACT_MIN__
* __ULLFRACT_MIN__
;
27 unsigned short _Fract usf1
= __USFRACT_MAX__
* __USFRACT_MIN__
;
28 unsigned _Fract uf1
= __UFRACT_MAX__
* __UFRACT_MIN__
;
29 unsigned long _Fract ulf1
= __ULFRACT_MAX__
* __ULFRACT_MIN__
;
30 unsigned long long _Fract ullf1
= __ULLFRACT_MAX__
* __ULLFRACT_MIN__
;
31 unsigned short _Fract usf2
= __USFRACT_MAX__
/ __USFRACT_MAX__
; /* { dg-warning "overflow" } */
32 unsigned _Fract uf2
= __UFRACT_MAX__
/ __UFRACT_MAX__
; /* { dg-warning "overflow" } */
33 unsigned long _Fract ulf2
= __ULFRACT_MAX__
/ __ULFRACT_MAX__
; /* { dg-warning "overflow" } */
34 unsigned long long _Fract ullf2
= __ULLFRACT_MAX__
/ __ULLFRACT_MAX__
; /* { dg-warning "overflow" } */
35 unsigned short _Fract usf3
= __USFRACT_MIN__
/ __USFRACT_MAX__
;
36 unsigned _Fract uf3
= __UFRACT_MIN__
/ __UFRACT_MAX__
;
37 unsigned long _Fract ulf3
= __ULFRACT_MIN__
/ __ULFRACT_MAX__
;
38 unsigned long long _Fract ullf3
= __ULLFRACT_MIN__
/ __ULLFRACT_MAX__
;
40 short _Accum sa0
= __SACCUM_MIN__
* __SACCUM_MIN__
; /* { dg-warning "overflow" } */
41 _Accum a0
= __ACCUM_MIN__
* __ACCUM_MIN__
; /* { dg-warning "overflow" } */
42 long _Accum la0
= __LACCUM_MIN__
* __LACCUM_MIN__
; /* { dg-warning "overflow" } */
43 long long _Accum lla0
= __LLACCUM_MIN__
* __LLACCUM_MIN__
; /* { dg-warning "overflow" } */
44 short _Accum sa1
= __SACCUM_MAX__
* 0.1hk
;
45 _Accum a1
= __ACCUM_MAX__
* 0.1k
;
46 long _Accum la1
= __LACCUM_MAX__
* 0.1lk
;
47 long long _Accum lla1
= __LLACCUM_MAX__
* 0.1llk
;
48 short _Accum sa2
= __SACCUM_MIN__
/ 0.1hk
; /* { dg-warning "overflow" } */
49 _Accum a2
= __ACCUM_MIN__
/ 0.1k
; /* { dg-warning "overflow" } */
50 long _Accum la2
= __LACCUM_MIN__
/ 0.1lk
; /* { dg-warning "overflow" } */
51 long long _Accum lla2
= __LLACCUM_MIN__
/ 0.1llk
; /* { dg-warning "overflow" } */
52 short _Accum sa3
= __SACCUM_MAX__
/ __SACCUM_MIN__
;
53 _Accum a3
= __ACCUM_MAX__
/ __ACCUM_MIN__
;
54 long _Accum la3
= __LACCUM_MAX__
/ __LACCUM_MIN__
;
55 long long _Accum lla3
= __LLACCUM_MAX__
/ __LLACCUM_MIN__
;
57 unsigned short _Accum usa0
= __USACCUM_MIN__
* __USACCUM_MIN__
;
58 unsigned _Accum ua0
= __UACCUM_MIN__
* __UACCUM_MIN__
;
59 unsigned long _Accum ula0
= __ULACCUM_MIN__
* __ULACCUM_MIN__
;
60 unsigned long long _Accum ulla0
= __ULLACCUM_MIN__
* __ULLACCUM_MIN__
;
61 unsigned short _Accum usa1
= __USACCUM_MAX__
* __USACCUM_MAX__
; /* { dg-warning "overflow" } */
62 unsigned _Accum ua1
= __UACCUM_MAX__
* __UACCUM_MAX__
; /* { dg-warning "overflow" } */
63 unsigned long _Accum ula1
= __ULACCUM_MAX__
* __ULACCUM_MAX__
; /* { dg-warning "overflow" } */
64 unsigned long long _Accum ulla1
= __ULLACCUM_MAX__
* __ULLACCUM_MAX__
; /* { dg-warning "overflow" } */
65 unsigned short _Accum usa2
= __USACCUM_MAX__
/ 0.5hk
; /* { dg-warning "overflow" } */
66 unsigned _Accum ua2
= __UACCUM_MAX__
/ 0.5k
; /* { dg-warning "overflow" } */
67 unsigned long _Accum ula2
= __ULACCUM_MAX__
/ 0.5lk
; /* { dg-warning "overflow" } */
68 unsigned long long _Accum ulla2
= __ULLACCUM_MAX__
/ 0.5llk
; /* { dg-warning "overflow" } */
69 unsigned short _Accum usa3
= __USACCUM_MIN__
/ __USACCUM_MAX__
;
70 unsigned _Accum ua3
= __UACCUM_MIN__
/ __UACCUM_MAX__
;
71 unsigned long _Accum ula3
= __ULACCUM_MIN__
/ __ULACCUM_MAX__
;
72 unsigned long long _Accum ulla3
= __ULLACCUM_MIN__
/ __ULLACCUM_MAX__
;