Commit dd36b877 by Jakub Jelinek Committed by Jakub Jelinek

re PR c/71858 (Surprising suggestions for misspellings)

	PR c/71858
	* c-decl.c (lookup_name_fuzzy): Ignore binding->invisible.

	* gcc.dg/spellcheck-identifiers.c (snprintf): Declare.
	* gcc.dg/spellcheck-identifiers-2.c: New test.
	* gcc.dg/diagnostic-token-ranges.c (nanl): Declare.
	* c-c++-common/attributes-1.c: Adjust dg-prune-output.

From-SVN: r238352
parent a241f8ca
2016-07-14 Jakub Jelinek <jakub@redhat.com>
PR c/71858
* c-decl.c (lookup_name_fuzzy): Ignore binding->invisible.
2016-07-12 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* c-parser.c (c_parser_generic_selection): Make type of variable
......
......@@ -4021,7 +4021,7 @@ lookup_name_fuzzy (tree name, enum lookup_name_fuzzy_kind kind)
for (c_scope *scope = current_scope; scope; scope = scope->outer)
for (c_binding *binding = scope->bindings; binding; binding = binding->prev)
{
if (!binding->id)
if (!binding->id || binding->invisible)
continue;
/* Don't use bindings from implicitly declared functions,
as they were likely misspellings themselves. */
......
2016-07-14 Jakub Jelinek <jakub@redhat.com>
PR c/71858
* gcc.dg/spellcheck-identifiers.c (snprintf): Declare.
* gcc.dg/spellcheck-identifiers-2.c: New test.
* gcc.dg/diagnostic-token-ranges.c (nanl): Declare.
* c-c++-common/attributes-1.c: Adjust dg-prune-output.
2016-07-14 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/71872
* gcc.c-torture/compile/pr71872.c: New test.
......
/* { dg-do compile } */
/* { dg-prune-output "undeclared here \\(not in a function\\); did you mean .carg..|\[^\n\r\]* was not declared in this scope" } */
/* { dg-prune-output "undeclared here \\(not in a function\\); did you mean .char..|\[^\n\r\]* was not declared in this scope" } */
void* my_calloc(unsigned, unsigned) __attribute__((alloc_size(1,bar))); /* { dg-warning "outside range" } */
void* my_realloc(void*, unsigned) __attribute__((alloc_size(bar))); /* { dg-warning "outside range" } */
......
......@@ -2,6 +2,8 @@
/* Verify that various diagnostics show source code ranges. */
long double nanl (const char *);
/* These ones merely use token ranges; they don't use tree ranges. */
void undeclared_identifier (void)
......
/* PR c/71858 */
/* Make sure anticipated builtins are not considered before they are declared. */
/* { dg-do compile } */
/* { dg-options "-Wimplicit-function-declaration -fdiagnostics-show-caret" } */
int sscafn (const char *, const char *, ...);
int
test_1 (const char *p)
{
int i;
return ssacnf (p, "%d", &i); /* { dg-warning "10: implicit declaration of function .ssacnf.; did you mean .sscafn.?" } */
/* { dg-begin-multiline-output "" }
return ssacnf (p, "%d", &i);
^~~~~~
sscafn
{ dg-end-multiline-output "" } */
}
int scafn (const char *, ...);
int scanf (const char *, ...);
int
test_2 (void)
{
int i;
return sacnf ("%d", &i); /* { dg-warning "10: implicit declaration of function .sacnf.; did you mean .scanf.?" } */
/* { dg-begin-multiline-output "" }
return sacnf ("%d", &i);
^~~~~
scanf
{ dg-end-multiline-output "" } */
}
......@@ -121,7 +121,7 @@ test_6 (enum foo f)
}
}
/* Verify that we offer names of builtins as suggestions. */
int snprintf (char *, __SIZE_TYPE__, const char *, ...);
void
test_7 (int i, int j)
......
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