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> 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 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
offset_int::from instead of wide_int::to_shwi. offset_int::from instead of wide_int::to_shwi.
(maybe_diag_overlap): Remove assertion. (maybe_diag_overlap): Remove assertion.
......
...@@ -2500,7 +2500,7 @@ definition than the similar @code{pure} attribute below because it prohibits ...@@ -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 function from reading global variables. Consequently, the presence of
the attribute on a function declarations allows GCC to emit more efficient the attribute on a function declarations allows GCC to emit more efficient
code for some calls to the function. Decorating the same function with 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 @cindex pointer arguments
Note that a function that has pointer arguments and examines the data 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, ...@@ -213,9 +213,13 @@ suggest_attribute (int option, tree decl, bool known_finite,
static void static void
warn_function_pure (tree decl, bool known_finite) 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, = suggest_attribute (OPT_Wsuggest_attribute_pure, decl,
known_finite, warned_about, "pure"); known_finite, warned_about, "pure");
} }
...@@ -226,8 +230,13 @@ warn_function_pure (tree decl, bool known_finite) ...@@ -226,8 +230,13 @@ warn_function_pure (tree decl, bool known_finite)
static void static void
warn_function_const (tree decl, bool known_finite) 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; static hash_set<tree> *warned_about;
warned_about warned_about
= suggest_attribute (OPT_Wsuggest_attribute_const, decl, = suggest_attribute (OPT_Wsuggest_attribute_const, decl,
known_finite, warned_about, "const"); known_finite, warned_about, "const");
} }
......
2018-01-03 Martin Sebor <msebor@redhat.com> 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. * gcc.dg/Wrestrict-3.c: New test.
2018-01-03 Jakub Jelinek <jakub@redhat.com> 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