Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/Wabsolute-value.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 /* PR c/89425 - -Wabsolute-value warns in dead subexpressions | |
2 { dg-do compile } | |
3 { dg-options "-Wabsolute-value -ftrack-macro-expansion=0" } */ | |
4 | |
5 struct Vals | |
6 { | |
7 signed char sc; | |
8 signed short ss; | |
9 signed int si; | |
10 signed long sl; | |
11 signed long long sll; | |
12 | |
13 unsigned char uc; | |
14 unsigned short us; | |
15 unsigned int ui; | |
16 unsigned long ul; | |
17 unsigned long long ull; | |
18 | |
19 float f; | |
20 double d; | |
21 long double ld; | |
22 }; | |
23 | |
24 #define abs(x) __builtin_abs (x) | |
25 #define labs(x) __builtin_labs (x) | |
26 #define llabs(x) __builtin_llabs (x) | |
27 | |
28 #define fabsf(x) __builtin_fabsf (x) | |
29 #define fabs(x) __builtin_fabs (x) | |
30 | |
31 | |
32 void tst_warn (struct Vals *p) | |
33 { | |
34 /* Verify that "-Wabsolute-value is issued for subexpressions | |
35 that are evaluated. */ | |
36 | |
37 p->uc = 0 ? abs (p->sc) : abs (p->uc); /* { dg-warning "\\\[-Wabsolute-value]" } */ | |
38 p->us = 0 ? abs (p->ss) : abs (p->us); /* { dg-warning "\\\[-Wabsolute-value]" } */ | |
39 p->ui = 0 ? abs (p->si) : abs (p->ui); /* { dg-warning "\\\[-Wabsolute-value]" } */ | |
40 p->ul = 0 ? labs (p->sl) : labs (p->ul); /* { dg-warning "\\\[-Wabsolute-value]" } */ | |
41 p->ull = 0 ? llabs (p->sll) : llabs (p->ull); /* { dg-warning "\\\[-Wabsolute-value]" } */ | |
42 | |
43 p->d = 0 ? fabs (p->d) : fabsf (p->d); /* { dg-warning "\\\[-Wabsolute-value]" } */ | |
44 } | |
45 | |
46 void tst_no_warn (struct Vals *p) | |
47 { | |
48 /* Verify that "-Wabsolute-value is not issued for subexpressions | |
49 that are not evaluated. */ | |
50 | |
51 p->uc = 0 ? abs (p->uc) : abs (p->sc); | |
52 p->us = 0 ? abs (p->us) : abs (p->ss); | |
53 p->ui = 0 ? abs (p->ui) : abs (p->si); | |
54 p->ul = 0 ? labs (p->ul) : labs (p->sl); | |
55 p->ull = 0 ? llabs (p->ull) : llabs (p->sll); | |
56 p->d = 0 ? fabsf (p->d) : fabs (p->d); | |
57 } |