Commit 3c2a70cb by Martin Sebor Committed by Martin Sebor

PR c/89425 - -Wabsolute-value warns in dead subexpressions

gcc/c/ChangeLog:

	PR c/89425
	* c-parser.c (sizeof_ptr_memacc_comptypes): Avoid warning in
	unreachable subexpressions.

gcc/testsuite/ChangeLog:

	PR c/89425
	* gcc.dg/Wabsolute-value.c: New test.

From-SVN: r269121
parent d228ac9a
2019-02-22 Martin Sebor <msebor@redhat.com>
PR c/89425
* c-parser.c (sizeof_ptr_memacc_comptypes): Avoid warning in
unreachable subexpressions.
2019-02-22 H.J. Lu <hongjiu.lu@intel.com>
Hongtao Liu <hongtao.liu@intel.com>
Sunil K Pandey <sunil.k.pandey@intel.com>
......
......@@ -9374,6 +9374,10 @@ sizeof_ptr_memacc_comptypes (tree type1, tree type2)
static void
warn_for_abs (location_t loc, tree fndecl, tree arg)
{
/* Avoid warning in unreachable subexpressions. */
if (c_inhibit_evaluation_warnings)
return;
tree atype = TREE_TYPE (arg);
/* Casts from pointers (and thus arrays and fndecls) will generate
......
2019-02-22 Martin Sebor <msebor@redhat.com>
PR c/89425
* gcc.dg/Wabsolute-value.c: New test.
* gcc.dg/Wbuiltin-declaration-mismatch-12.c: New test.
2019-02-22 H.J. Lu <hongjiu.lu@intel.com>
......
/* PR c/89425 - -Wabsolute-value warns in dead subexpressions
{ dg-do compile }
{ dg-options "-Wabsolute-value -ftrack-macro-expansion=0" } */
struct Vals
{
signed char sc;
signed short ss;
signed int si;
signed long sl;
signed long long sll;
unsigned char uc;
unsigned short us;
unsigned int ui;
unsigned long ul;
unsigned long long ull;
float f;
double d;
long double ld;
};
#define abs(x) __builtin_abs (x)
#define labs(x) __builtin_labs (x)
#define llabs(x) __builtin_llabs (x)
#define fabsf(x) __builtin_fabsf (x)
#define fabs(x) __builtin_fabs (x)
void tst_warn (struct Vals *p)
{
/* Verify that "-Wabsolute-value is issued for subexpressions
that are evaluated. */
p->uc = 0 ? abs (p->sc) : abs (p->uc); /* { dg-warning "\\\[-Wabsolute-value]" } */
p->us = 0 ? abs (p->ss) : abs (p->us); /* { dg-warning "\\\[-Wabsolute-value]" } */
p->ui = 0 ? abs (p->si) : abs (p->ui); /* { dg-warning "\\\[-Wabsolute-value]" } */
p->ul = 0 ? labs (p->sl) : labs (p->ul); /* { dg-warning "\\\[-Wabsolute-value]" } */
p->ull = 0 ? llabs (p->sll) : llabs (p->ull); /* { dg-warning "\\\[-Wabsolute-value]" } */
p->d = 0 ? fabs (p->d) : fabsf (p->d); /* { dg-warning "\\\[-Wabsolute-value]" } */
}
void tst_no_warn (struct Vals *p)
{
/* Verify that "-Wabsolute-value is not issued for subexpressions
that are not evaluated. */
p->uc = 0 ? abs (p->uc) : abs (p->sc);
p->us = 0 ? abs (p->us) : abs (p->ss);
p->ui = 0 ? abs (p->ui) : abs (p->si);
p->ul = 0 ? labs (p->ul) : labs (p->sl);
p->ull = 0 ? llabs (p->ull) : llabs (p->sll);
p->d = 0 ? fabsf (p->d) : fabs (p->d);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment