https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89122

--- Comment #3 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Author: dmalcolm
Date: Thu Jan 31 18:09:29 2019
New Revision: 268426

URL: https://gcc.gnu.org/viewcvs?rev=268426&root=gcc&view=rev
Log:
Fix bogus fix-it for FLT_MAX (PR c/89122)

PR c/89122 reports that we emit a bogus fix-it hint for the case where
the code uses FLT_MAX, but has included <limits.h> rather than <float.h>:

x.c:3:11: error: 'FLT_MAX' undeclared here (not in a function); did you
  mean 'INT_MAX'?
    3 | float f = FLT_MAX;
      |           ^~~~~~~
      |           INT_MAX

This patch adds some knowledge of <float.h> (and <cfloat>) to
known-headers.cc, fixing the issue:

x.c:3:11: error: 'FLT_MAX' undeclared here (not in a function)
    3 | float f = FLT_MAX;
      |           ^~~~~~~
x.c:2:1: note: 'FLT_MAX' is defined in header '<float.h>'; did you forget
  to '#include <float.h>'?
    1 | #include <limits.h>
  +++ |+#include <float.h>
    2 |

gcc/c-family/ChangeLog:
        PR c/89122
        * known-headers.cc (get_stdlib_header_for_name): Add
        {FLT|DBL|LDBL}_{MAX|MIN} to "hints" array.

gcc/testsuite/ChangeLog:
        PR c/89122
        * g++.dg/spellcheck-stdlib.C (test_FLT_MAX): New test.
        * gcc.dg/spellcheck-stdlib.c (test_FLT_MAX): New test.


Modified:
    trunk/gcc/c-family/ChangeLog
    trunk/gcc/c-family/known-headers.cc
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.dg/spellcheck-stdlib.C
    trunk/gcc/testsuite/gcc.dg/spellcheck-stdlib.c

Reply via email to