Only ignore -Wenum-compare-switch if it exists
authorSimon Marchi <simon.marchi@ericsson.com>
Sun, 31 Dec 2017 04:33:26 +0000 (23:33 -0500)
committerSimon Marchi <simon.marchi@ericsson.com>
Sun, 31 Dec 2017 04:33:26 +0000 (23:33 -0500)
commitcfa27c399ec9236a100ef794505d35f60da41a6d
treebdb4efc8167d569517f1225e16944d4b802df7a0
parent132448f8359a268f34f074b0908b5255b568da06
Only ignore -Wenum-compare-switch if it exists

My patch

  dwarf2read: Silence -Wenum-compare-switch warning
  132448f8359a268f34f074b0908b5255b568da06

made some parts of dwarf2read.c ignore warnings about switch using enums
of different kinds.  What I did not realize was that older Clang
versions (prior to 6) did not have that warning, and therefore give this
error:

/home/emaisin/src/binutils-gdb/gdb/dwarf2read.c:24187:7: error: unknown warning group '-Wenum-compare-switch', ignored [-Werror,-Wunknown-pragmas]
      DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
      ^
/home/emaisin/src/binutils-gdb/gdb/common/diagnostics.h:42:3: note: expanded from macro 'DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES'
  DIAGNOSTIC_IGNORE ("-Wenum-compare-switch")
  ^
/home/emaisin/src/binutils-gdb/gdb/common/diagnostics.h:27:3: note: expanded from macro 'DIAGNOSTIC_IGNORE'
  _Pragma (STRINGIFY (GCC diagnostic ignored option))
  ^
<scratch space>:10:25: note: expanded from here
 GCC diagnostic ignored "-Wenum-compare-switch"
                        ^

Clang has a way to test if it knows about a particular warning.  This
patch uses that feature to only define
DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES to something if the
warning is recognized by the Clang version being used.  I tested
building dwarf2read.c with clang 4, 5, 6, as well as gcc.

gdb/ChangeLog:

* common/diagnostics.h
(DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES): Only
define if the compiler knows about -Wenum-compare-switch.
gdb/ChangeLog
gdb/common/diagnostics.h