Commit a594cff3 by Martin Sebor Committed by Martin Sebor

PR c/83559 - -Wsuggest-attribute=const conflicts with -Wattributes warning about…

PR c/83559 - -Wsuggest-attribute=const conflicts with -Wattributes warning about const attribute on function returning void

gcc/ChangeLog:

	PR c/83559
	* doc/extend.texi (attribute const): Fix a typo.
	* ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
	issuing -Wsuggest-attribute for void functions.

gcc/testsuite/ChangeLog:

	PR c/83559
	* gcc.dg/const-2.c: New test.
	* gcc.dg/pure-3.c: New test.

From-SVN: r256188
parent a6fd2cd7
2018-01-03 Martin Sebor <msebor@redhat.com>
PR c/83559
* doc/extend.texi (attribute const): Fix a typo.
* ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
issuing -Wsuggest-attribute for void functions.
2018-01-03 Martin Sebor <msebor@redhat.com>
* gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
offset_int::from instead of wide_int::to_shwi.
(maybe_diag_overlap): Remove assertion.
......
......@@ -2500,7 +2500,7 @@ definition than the similar @code{pure} attribute below because it prohibits
the function from reading global variables. Consequently, the presence of
the attribute on a function declarations allows GCC to emit more efficient
code for some calls to the function. Decorating the same function with
both the @code{const} and the @code{pure} attribute is diagnnosed.
both the @code{const} and the @code{pure} attribute is diagnosed.
@cindex pointer arguments
Note that a function that has pointer arguments and examines the data
......
......@@ -213,9 +213,13 @@ suggest_attribute (int option, tree decl, bool known_finite,
static void
warn_function_pure (tree decl, bool known_finite)
{
static hash_set<tree> *warned_about;
/* Declaring a void function pure makes no sense and is diagnosed
by -Wattributes because calling it would have no effect. */
if (VOID_TYPE_P (TREE_TYPE (TREE_TYPE (decl))))
return;
warned_about
static hash_set<tree> *warned_about;
warned_about
= suggest_attribute (OPT_Wsuggest_attribute_pure, decl,
known_finite, warned_about, "pure");
}
......@@ -226,8 +230,13 @@ warn_function_pure (tree decl, bool known_finite)
static void
warn_function_const (tree decl, bool known_finite)
{
/* Declaring a void function const makes no sense is diagnosed
by -Wattributes because calling it would have no effect. */
if (VOID_TYPE_P (TREE_TYPE (TREE_TYPE (decl))))
return;
static hash_set<tree> *warned_about;
warned_about
warned_about
= suggest_attribute (OPT_Wsuggest_attribute_const, decl,
known_finite, warned_about, "const");
}
......
2018-01-03 Martin Sebor <msebor@redhat.com>
PR c/83559
* gcc.dg/const-2.c: New test.
* gcc.dg/pure-3.c: New test.
2018-01-03 Martin Sebor <msebor@redhat.com>
* gcc.dg/Wrestrict-3.c: New test.
2018-01-03 Jakub Jelinek <jakub@redhat.com>
......
/* PR tree-optimization/83559 - -Wsuggest-attribute=const conflicts with
-Wattributes warning about const attribute on function returning void
{ dg-do compile { target nonpic } }
{ dg-options "-O2 -Wsuggest-attribute=const" } */
int f_i_v (void) /* { dg-warning "candidate for attribute .const." } */
{
return 0;
}
int f_i () /* { dg-warning "candidate for attribute .const." } */
{
return 0;
}
void f_v_v (void) /* { dg-bogus "candidate" } */
{
}
void f_v () /* { dg-bogus "candidate" } */
{
}
/* PR tree-optimization/83559 - -Wsuggest-attribute=const conflicts with
-Wattributes warning about const attribute on function returning void
{ dg-do compile { target nonpic } }
{ dg-options "-O2 -Wsuggest-attribute=pure" } */
int global;
int f_i_v (void) /* { dg-warning "candidate for attribute .pure." } */
{
return global;
}
int f_i () /* { dg-warning "candidate for attribute .pure." } */
{
return global;
}
void f_v_v (void) /* { dg-bogus "candidate" } */
{
}
void f_v () /* { dg-bogus "candidate" } */
{
}
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