diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2014-07-01 18:00:38 -0700 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2014-07-01 18:00:38 -0700 |
commit | 17605f7782ac9a73a3dacf6ce27e5dae36160f01 (patch) | |
tree | 31acbe279cc6f51730d6f509648ec3ab7d8e43a9 /src/warning_list.hpp | |
parent | e6db8d726bb971bdc7704d29cd26d80bc299da5a (diff) | |
download | tmwa-17605f7782ac9a73a3dacf6ce27e5dae36160f01.tar.gz tmwa-17605f7782ac9a73a3dacf6ce27e5dae36160f01.tar.bz2 tmwa-17605f7782ac9a73a3dacf6ce27e5dae36160f01.tar.xz tmwa-17605f7782ac9a73a3dacf6ce27e5dae36160f01.zip |
In order to disable them, diagnostic header must be public and included
Diffstat (limited to 'src/warning_list.hpp')
-rw-r--r-- | src/warning_list.hpp | 1256 |
1 files changed, 0 insertions, 1256 deletions
diff --git a/src/warning_list.hpp b/src/warning_list.hpp deleted file mode 100644 index 6b45375..0000000 --- a/src/warning_list.hpp +++ /dev/null @@ -1,1256 +0,0 @@ -#pragma once -// warning_list.hpp - List of useful warnings. -// -// Copyright © 2013-2014 Ben Longbons <b.r.longbons@gmail.com> -// -// This file is part of The Mana World (Athena server) -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see <http://www.gnu.org/licenses/>. - -// just mention "fwd.hpp" to make formatter happy - - -namespace tmwa -{ -// Notes about reading this file: -// * Currently only implemented for C++, but could work in C -// * the HAS_DIAG_ is subject to an additional check for clang -// * because token dispatching, it can't be #define HAS_XXX (GCC >= yyy) -// * gcc 4.6 is required for function scope pragmas -// * when upgrading compiler, diff 'gcc --help=warnings' -// * clang-specific warning support is incomplete - -// List of warnings that require arguments, -// and thus cannot reliably be activated: -// gcc 4.6: -// -Wlarger-than=<1024> -// -Wnormalized=<id|nfc|nfd> -// -Wsuggest-attribute=<noreturn,const,pure,format> -// gcc 4.7: -// -Wstack-usage=<8192> -// ???: -// -Wstrict-aliasing=<1> -// -Wstrict-overflow=<1> - -#ifdef __GNUC__ -# ifdef __clang__ -# define GCC (0) -# define CLANG (1) // clang's versions are vendor-specific - stupid apple -# else -# define GCC (__GNUC__ * 100 + __GNUC_MINOR__) -# define CLANG (0) -# endif -#endif - -#if GCC >= 406 || CLANG -# define PRAGMA(x) _Pragma(#x) static_assert(1, "I like my semicolons") -#else -# define PRAGMA(x) static_assert(1, "pragmas not available, can't do: " #x) -#endif - -PRAGMA(GCC diagnostic warning "-Wall"); -PRAGMA(GCC diagnostic warning "-Wextra"); -PRAGMA(GCC diagnostic warning "-Wunused"); -PRAGMA(GCC diagnostic warning "-Wformat"); - -#define DIAG_E(tag) DO_DIAG_IF(HAS_DIAG_##tag)(error, DIAG_##tag) -#define DIAG_W(tag) DO_DIAG_IF(HAS_DIAG_##tag)(warning, DIAG_##tag) -#define DIAG_I(tag) DO_DIAG_IF(HAS_DIAG_##tag)(ignored, DIAG_##tag) -#define DIAG_X(tag) DO_DIAG_IF(HAS_DIAG_##tag)(ignored, DIAG_##tag) - -#define DO_DIAG_IF(c) JOIN_PLEASE(PRAGMA_IF_,c) -#define JOIN_PLEASE(a, b) a##b -#define PRAGMA_IF_0(lvl, str) static_assert(1, "warning " #str " not enabled for this compiler version, sorry") -#if CLANG -# define PRAGMA_IF_1(lvl, str) DO_DIAG_IF2(__has_warning(str))(lvl, str) -# define DO_DIAG_IF2(s) JOIN_PLEASE(PRAGMA_IF2_, s) -# define PRAGMA_IF2_0(lvl, str) static_assert(1, "warning " #str " not available in this compiler version, sorry") -# define PRAGMA_IF2_1(lvl, str) PRAGMA(GCC diagnostic lvl str) -#else -# define PRAGMA_IF_1(lvl, str) PRAGMA(GCC diagnostic lvl str) -#endif - -#define DIAG_PUSH() PRAGMA(GCC diagnostic push) -#define DIAG_POP() PRAGMA(GCC diagnostic pop) - - -/// Warn about things that will change when compiling -/// with an ABI-compliant compiler -// see note about -fabi-version=6 in the makefile -#define DIAG_abi "-Wabi" -#if 1 -# define HAS_DIAG_abi 1 -#else -# define HAS_DIAG_abi 0 -#endif - -/// Warn if a subobject has an abi_tag attribute that -/// the complete object type does not have -#define DIAG_abi_tag "-Wabi-tag" -#if GCC >= 408 -# define HAS_DIAG_abi_tag 1 -#else -# define HAS_DIAG_abi_tag 0 -#endif - -/// Warn about suspicious uses of memory addresses -#define DIAG_address "-Waddress" -#if 1 -# define HAS_DIAG_address 1 -#else -# define HAS_DIAG_address 0 -#endif - -/// Warn about returning structures, unions or arrays -#define DIAG_aggregate_return "-Waggregate-return" -#if 1 -# define HAS_DIAG_aggregate_return 1 -#else -# define HAS_DIAG_aggregate_return 0 -#endif - -/// Warn if an array is accessed out of bounds -#define DIAG_array_bounds "-Warray-bounds" -#if 1 -# define HAS_DIAG_array_bounds 1 -#else -# define HAS_DIAG_array_bounds 0 -#endif - -/// Warn about inappropriate attribute usage -#define DIAG_attributes "-Wattributes" -#if 1 -# define HAS_DIAG_attributes 1 -#else -# define HAS_DIAG_attributes 0 -#endif - -/// Warn when a built-in preprocessor macro is -// undefined or redefined -#define DIAG_builtin_macro_redefined "-Wbuiltin-macro-redefined" -#if 1 -# define HAS_DIAG_builtin_macro_redefined 1 -#else -# define HAS_DIAG_builtin_macro_redefined 0 -#endif - -/// Warn about C++ constructs whose meaning differs -/// between ISO C++ 1998 and ISO C++ 2011 -#if CLANG || GCC >= 407 -# define DIAG_cxx0x_compat "-Wc++11-compat" -# define DIAG_cxx11_compat "-Wc++11-compat" -#else -# define DIAG_cxx0x_compat "-Wc++0x-compat" -# define DIAG_cxx11_compat "-Wc++0x-compat" -#endif -#if 1 -# define HAS_DIAG_cxx0x_compat 1 -# define HAS_DIAG_cxx11_compat 1 -#else -# define HAS_DIAG_cxx0x_compat 0 -# define HAS_DIAG_cxx11_compat 0 -#endif - -// I care about whether my code compiles with the standard as implemented -// by certain compilers, not whether it matches with an *exact* standard. -#define DIAG_cxx1y_extensions "-Wc++1y-extensions" -#if CLANG -# define HAS_DIAG_cxx1y_extensions 1 -#else -# define HAS_DIAG_cxx1y_extensions 0 -#endif - -/// Warn about pointer casts which increase alignment -#define DIAG_cast_align "-Wcast-align" -#if 1 -# define HAS_DIAG_cast_align 1 -#else -# define HAS_DIAG_cast_align 0 -#endif - -/// Warn about casts which discard qualifiers -#define DIAG_cast_qual "-Wcast-qual" -#if 1 -# define HAS_DIAG_cast_qual 1 -#else -# define HAS_DIAG_cast_qual 0 -#endif - -/// Warn about subscripts whose type is "char" -#define DIAG_char_subscripts "-Wchar-subscripts" -#if 1 -# define HAS_DIAG_char_subscripts 1 -#else -# define HAS_DIAG_char_subscripts 0 -#endif - -/// Warn about variables that might be changed by -/// "longjmp" or "vfork" -#define DIAG_clobbered "-Wclobbered" -#if GCC -# define HAS_DIAG_clobbered 1 -#else -# define HAS_DIAG_clobbered 0 -#endif - -/// Warn about possibly nested block comments, and -/// C++ comments spanning more than one physical line -#define DIAG_comment "-Wcomment" -#if 1 -# define HAS_DIAG_comment 1 -#else -# define HAS_DIAG_comment 0 -#endif - -/// Warn for conditionally-supported constructs -#define DIAG_conditionally_supported "-Wconditionally-supported" -#if GCC >= 409 -# define HAS_DIAG_conditionally_supported 1 -#else -# define HAS_DIAG_conditionally_supported 0 -#endif - -// A fixable difference between c++11 and c++14 -#define DIAG_constexpr_not_const "-Wconstexpr-not-const" -#if CLANG -# define HAS_DIAG_constexpr_not_const 1 -#else -# define HAS_DIAG_constexpr_not_const 0 -#endif - -/// Warn for implicit type conversions that may -/// change a value -#define DIAG_conversion "-Wconversion" -#if 1 -# define HAS_DIAG_conversion 1 -#else -# define HAS_DIAG_conversion 0 -#endif - -/// Warn for converting NULL from/to a non-pointer -/// type -#define DIAG_conversion_null "-Wconversion-null" -#if 1 -# define HAS_DIAG_conversion_null 1 -#else -# define HAS_DIAG_conversion_null 0 -#endif - -/// Warn in case profiles in -fprofile-use do not -/// match -#define DIAG_coverage_mismatch "-Wcoverage-mismatch" -#if GCC -# define HAS_DIAG_coverage_mismatch 1 -#else -# define HAS_DIAG_coverage_mismatch 0 -#endif - -/// -#define DIAG_covered_switch_default "-Wcovered-switch-default" -#if CLANG -# define HAS_DIAG_covered_switch_default 1 -#else -# define HAS_DIAG_covered_switch_default 0 -#endif - -/// Warn when a #warning directive is encountered -#define DIAG_cpp "-Wcpp" -#if GCC -# define HAS_DIAG_cpp 1 -#else -# define HAS_DIAG_cpp 0 -#endif - -/// Warn when all constructors and destructors are -/// private -#define DIAG_ctor_dtor_privacy "-Wctor-dtor-privacy" -#if 1 -# define HAS_DIAG_ctor_dtor_privacy 1 -#else -# define HAS_DIAG_ctor_dtor_privacy 0 -#endif - -/// Warn about __TIME__, __DATE__ and __TIMESTAMP__ -/// usage -#define DIAG_date_time "-Wdate-time" -#if GCC >= 409 -# define HAS_DIAG_date_time 1 -#else -# define HAS_DIAG_date_time 0 -#endif - -/// Warn when deleting a pointer to incomplete type -#define DIAG_delete_incomplete "-Wdelete-incomplete" -#if GCC >= 409 -# define HAS_DIAG_delete_incomplete 1 -#else -# define HAS_DIAG_delete_incomplete 0 -#endif - -/// Warn about deleting polymorphic objects with non- -/// virtual destructors -#define DIAG_delete_non_virtual_dtor "-Wdelete-non-virtual-dtor" -#if GCC >= 407 -# define HAS_DIAG_delete_non_virtual_dtor 1 -#else -# define HAS_DIAG_delete_non_virtual_dtor 0 -#endif - -/// Warn if a deprecated compiler feature, class, -/// method, or field is used -#define DIAG_deprecated "-Wdeprecated" -#if 1 -# define HAS_DIAG_deprecated 1 -#else -# define HAS_DIAG_deprecated 0 -#endif - -/// Warn about uses of __attribute__((deprecated)") -/// declarations -#define DIAG_deprecated_declarations "-Wdeprecated-declarations" -#if 1 -# define HAS_DIAG_deprecated_declarations 1 -#else -# define HAS_DIAG_deprecated_declarations 0 -#endif - -/// Warn when an optimization pass is disabled -#define DIAG_disabled_optimization "-Wdisabled-optimization" -#if 1 -# define HAS_DIAG_disabled_optimization 1 -#else -# define HAS_DIAG_disabled_optimization 0 -#endif - -/// Warn about compile-time integer division by zero -#define DIAG_div_by_zero "-Wdiv-by-zero" -#if 1 -# define HAS_DIAG_div_by_zero 1 -#else -# define HAS_DIAG_div_by_zero 0 -#endif - -/// -#define DIAG_documentation "-Wdocumentation" -#if CLANG -# define HAS_DIAG_documentation 1 -#else -# define HAS_DIAG_documentation 0 -#endif - -/// Warn about implicit conversions from "float" to -/// "double" -#define DIAG_double_promotion "-Wdouble-promotion" -#if GCC -# define HAS_DIAG_double_promotion 1 -#else -# define HAS_DIAG_double_promotion 0 -#endif - -/// Warn about violations of Effective C++ style rules -#define DIAG_effcxx "-Weffc++" -#if 1 -# define HAS_DIAG_effcxx 1 -#else -# define HAS_DIAG_effcxx 0 -#endif - -/// Warn about an empty body in an if or else -/// statement -#define DIAG_empty_body "-Wempty-body" -#if 1 -# define HAS_DIAG_empty_body 1 -#else -# define HAS_DIAG_empty_body 0 -#endif - -/// Warn about stray tokens after #elif and #endif -#define DIAG_endif_labels "-Wendif-labels" -#if 1 -# define HAS_DIAG_endif_labels 1 -#else -# define HAS_DIAG_endif_labels 0 -#endif - -/// Warn about comparison of different enum types -#define DIAG_enum_compare "-Wenum-compare" -#if 1 -# define HAS_DIAG_enum_compare 1 -#else -# define HAS_DIAG_enum_compare 0 -#endif - -/// -#define DIAG_extra_semi "-Wextra-semi" -#if CLANG -# define HAS_DIAG_extra_semi 1 -#else -# define HAS_DIAG_extra_semi 0 -#endif - -/// Warn if testing floating point numbers for -/// equality -#define DIAG_float_equal "-Wfloat-equal" -#if 1 -# define HAS_DIAG_float_equal 1 -#else -# define HAS_DIAG_float_equal 0 -#endif - -/// Warn about printf/scanf/strftime/strfmon format -/// string anomalies -// see below -#define DIAG_format "-Wformat" -#if GCC -# define HAS_DIAG_format 1 -#else -# define HAS_DIAG_format 0 -#endif -// but gcc 4.8 warns on %ms, since we enabled -Wpedantic. -//WG48("-Wformat") - -/// Warn about format strings that contain NUL bytes -#define DIAG_format_contains_nul "-Wformat-contains-nul" -#if GCC -# define HAS_DIAG_format_contains_nul 1 -#else -# define HAS_DIAG_format_contains_nul 0 -#endif - -/// Warn if passing too many arguments to a function -/// for its format string -#define DIAG_format_extra_args "-Wformat-extra-args" -#if 1 -# define HAS_DIAG_format_extra_args 1 -#else -# define HAS_DIAG_format_extra_args 0 -#endif - -/// Warn about format strings that are not literals -// Available in clang, but not smart enough to handle constexpr. -#define DIAG_format_nonliteral "-Wformat-nonliteral" -#if GCC || (CLANG && 1) -# define HAS_DIAG_format_nonliteral 1 -#else -# define HAS_DIAG_format_nonliteral 0 -#endif - -/// Warn about possible security problems with format -/// functions -// Same. -#define DIAG_format_security "-Wformat-security" -#if GCC || (CLANG && 1) -# define HAS_DIAG_format_security 1 -#else -# define HAS_DIAG_format_security 0 -#endif - -/// Warn about strftime formats yielding 2-digit years -#define DIAG_format_y2k "-Wformat-y2k" -#if 1 -# define HAS_DIAG_format_y2k 1 -#else -# define HAS_DIAG_format_y2k 0 -#endif - -/// Warn about zero-length formats -#define DIAG_format_zero_length "-Wformat-zero-length" -#if 1 -# define HAS_DIAG_format_zero_length 1 -#else -# define HAS_DIAG_format_zero_length 0 -#endif - -/// Warn when attempting to free a non-heap object -#define DIAG_free_nonheap_object "-Wfree-nonheap-object" -#if GCC >= 407 -# define HAS_DIAG_free_nonheap_object 1 -#else -# define HAS_DIAG_free_nonheap_object 0 -#endif - -// -Wgnu is a clang alias for -Wpedantic - -// Foo{x: y} -#define DIAG_gnu_designator "-Wgnu-designator" -#if CLANG -# define HAS_DIAG_gnu_designator 1 -#else -# define HAS_DIAG_gnu_designator 0 -#endif - - -/// Warn whenever type qualifiers are ignored. -#define DIAG_ignored_qualifiers "-Wignored-qualifiers" -#if 1 -# define HAS_DIAG_ignored_qualifiers 1 -#else -# define HAS_DIAG_ignored_qualifiers 0 -#endif - -/// -#define DIAG_implicit_fallthrough "-Wimplicit-fallthrough" -#if CLANG -# define HAS_DIAG_implicit_fallthrough 1 -#else -# define HAS_DIAG_implicit_fallthrough 0 -#endif - -/// Warn about C++11 inheriting constructors when the -/// base has a variadic constructor -#define DIAG_inherited_variadic_ctor "-Winherited-variadic-ctor" -#if GCC >= 408 -# define HAS_DIAG_inherited_variadic_ctor 1 -#else -# define HAS_DIAG_inherited_variadic_ctor 0 -#endif - -/// Warn about variables which are initialized to -/// themselves -#define DIAG_init_self "-Winit-self" -#if 1 -# define HAS_DIAG_init_self 1 -#else -# define HAS_DIAG_init_self 0 -#endif - -/// Warn when an inlined function cannot be inlined -#define DIAG_inline "-Winline" -#if 1 -# define HAS_DIAG_inline 1 -#else -# define HAS_DIAG_inline 0 -#endif - -/// Warn when there is a cast to a pointer from an -/// integer of a different size -#define DIAG_int_to_pointer_cast "-Wint-to-pointer-cast" -#if 1 -# define HAS_DIAG_int_to_pointer_cast 1 -#else -# define HAS_DIAG_int_to_pointer_cast 0 -#endif - -/// Warn when an atomic memory model parameter is -/// known to be outside the valid range. -#define DIAG_invalid_memory_model "-Winvalid-memory-model" -#if GCC >= 407 -# define HAS_DIAG_invalid_memory_model 1 -#else -# define HAS_DIAG_invalid_memory_model 0 -#endif - -/// Warn about invalid uses of the "offsetof" macro -#define DIAG_invalid_offsetof "-Winvalid-offsetof" -#if 1 -# define HAS_DIAG_invalid_offsetof 1 -#else -# define HAS_DIAG_invalid_offsetof 0 -#endif - -/// Warn about PCH files that are found but not used -#define DIAG_invalid_pch "-Winvalid-pch" -#if 1 -# define HAS_DIAG_invalid_pch 1 -#else -# define HAS_DIAG_invalid_pch 0 -#endif - -/// Warn when a string or character literal is -/// followed by a ud-suffix which does not begin with -/// an underscore. -#define DIAG_literal_suffix "-Wliteral-suffix" -#if GCC >= 408 -# define HAS_DIAG_literal_suffix 1 -#else -# define HAS_DIAG_literal_suffix 0 -#endif - -/// Warn when a logical operator is suspiciously -/// always evaluating to true or false -#define DIAG_logical_op "-Wlogical-op" -#if GCC -# define HAS_DIAG_logical_op 1 -#else -# define HAS_DIAG_logical_op 0 -#endif - -/// Do not warn about using "long long" when -pedantic -#define DIAG_long_long "-Wlong-long" -#if 1 -# define HAS_DIAG_long_long 1 -#else -# define HAS_DIAG_long_long 0 -#endif - -/// Warn about suspicious declarations of "main" -#define DIAG_main "-Wmain" -#if 1 -# define HAS_DIAG_main 1 -#else -# define HAS_DIAG_main 0 -#endif - -/// Warn about maybe uninitialized automatic variables -#define DIAG_maybe_uninitialized "-Wmaybe-uninitialized" -#if GCC >= 407 -# define HAS_DIAG_maybe_uninitialized 1 -#else -# define HAS_DIAG_maybe_uninitialized 0 -#endif - -// bitch about 'struct Foo' vs 'class Foo' -#define DIAG_mismatched_tags "-Wmismatched-tags" -#if CLANG -# define HAS_DIAG_mismatched_tags 1 -#else -# define HAS_DIAG_mismatched_tags 0 -#endif - -/// Warn about possibly missing braces around -/// initializers -// beware of things like std::array! -#define DIAG_missing_braces "-Wmissing-braces" -#if 1 -# define HAS_DIAG_missing_braces 1 -#else -# define HAS_DIAG_missing_braces 0 -#endif - -/// Warn about global functions without previous -/// declarations -// This doesn't work for clang, it wants -Wmissing-prototypes instead. -#define DIAG_missing_declarations "-Wmissing-declarations" -#if 1 -# define HAS_DIAG_missing_declarations 1 -#else -# define HAS_DIAG_missing_declarations 0 -#endif - -/// Warn about missing fields in struct initializers -// Actually supported by GCC, but gives warnings when I don't want, e.g.: -// Foo foo = {}; -#define DIAG_missing_field_initializers "-Wmissing-field-initializers" -#if CLANG || (GCC && 1) -# define HAS_DIAG_missing_field_initializers 1 -#else -# define HAS_DIAG_missing_field_initializers 0 -#endif - -/// Warn about functions which might be candidates -/// for format attributes -#define DIAG_missing_format_attribute "-Wmissing-format-attribute" -#if 1 -# define HAS_DIAG_missing_format_attribute 1 -#else -# define HAS_DIAG_missing_format_attribute 0 -#endif - -/// Warn about user-specified include directories -/// that do not exist -#define DIAG_missing_include_dirs "-Wmissing-include-dirs" -#if 1 -# define HAS_DIAG_missing_include_dirs 1 -#else -# define HAS_DIAG_missing_include_dirs 0 -#endif - -/// Warn about functions which might be candidates -/// for __attribute__((noreturn)") -#define DIAG_missing_noreturn "-Wmissing-noreturn" -#if 1 -# define HAS_DIAG_missing_noreturn 1 -#else -# define HAS_DIAG_missing_noreturn 0 -#endif - -// clang uses this instead of -Wmissing-declarations -#define DIAG_missing_prototypes "-Wmissing-prototypes" -#if CLANG -# define HAS_DIAG_missing_prototypes 1 -#else -# define HAS_DIAG_missing_prototypes 0 -#endif - -/// -// like -Wmissing-declarations but for variables instead of functions -#define DIAG_missing_variable_declarations "-Wmissing-variable-declarations" -#if CLANG -# define HAS_DIAG_missing_variable_declarations 1 -#else -# define HAS_DIAG_missing_variable_declarations 0 -#endif - -/// Warn about constructs not instrumented by -/// -fmudflap -#define DIAG_mudflap "-Wmudflap" -#if GCC -# define HAS_DIAG_mudflap 1 -#else -# define HAS_DIAG_mudflap 0 -#endif - -/// Warn about use of multi-character character -/// constants -#define DIAG_multichar "-Wmultichar" -#if 1 -# define HAS_DIAG_multichar 1 -#else -# define HAS_DIAG_multichar 0 -#endif - -/// Warn about narrowing conversions within { } that -/// are ill-formed in C++11 -#define DIAG_narrowing "-Wnarrowing" -#if GCC >= 407 -# define HAS_DIAG_narrowing 1 -#else -# define HAS_DIAG_narrowing 0 -#endif - -/// Warn when a noexcept expression evaluates to -/// false even though the expression can't actually -/// throw -#define DIAG_noexcept "-Wnoexcept" -#if GCC -# define HAS_DIAG_noexcept 1 -#else -# define HAS_DIAG_noexcept 0 -#endif - -/// Warn when non-templatized friend functions are -/// declared within a template -#define DIAG_non_template_friend "-Wnon-template-friend" -#if GCC -# define HAS_DIAG_non_template_friend 1 -#else -# define HAS_DIAG_non_template_friend 0 -#endif - -/// Warn about non-virtual destructors -#define DIAG_non_virtual_dtor "-Wnon-virtual-dtor" -#if 1 -# define HAS_DIAG_non_virtual_dtor 1 -#else -# define HAS_DIAG_non_virtual_dtor 0 -#endif - -/// Warn about NULL being passed to argument slots -/// marked as requiring non-NULL -#define DIAG_nonnull "-Wnonnull" -#if 1 -# define HAS_DIAG_nonnull 1 -#else -# define HAS_DIAG_nonnull 0 -#endif - -/// -#define DIAG_null_conversion "-Wnull-conversion" -#if CLANG -# define HAS_DIAG_null_conversion 1 -#else -# define HAS_DIAG_null_conversion 0 -#endif - -/// Warn if a C-style cast is used in a program -#define DIAG_old_style_cast "-Wold-style-cast" -#if 1 -# define HAS_DIAG_old_style_cast 1 -#else -# define HAS_DIAG_old_style_cast 0 -#endif - -/// Warn about overflow in arithmetic expressions -#define DIAG_overflow "-Woverflow" -#if 1 -# define HAS_DIAG_overflow 1 -#else -# define HAS_DIAG_overflow 0 -#endif - -/// Warn if a simd directive is overridden by the -/// vectorizer cost model -#define DIAG_openmp_simd "-Wopenmp-simd" -#if GCC >= 409 -# define HAS_DIAG_openmp_simd 1 -#else -# define HAS_DIAG_openmp_simd 0 -#endif - -/// Warn if a string is longer than the maximum -/// portable length specified by the standard -//X("-Woverlength-strings") - -/// Warn about overloaded virtual function names -#define DIAG_overloaded_virtual "-Woverloaded-virtual" -#if 1 -# define HAS_DIAG_overloaded_virtual 1 -#else -# define HAS_DIAG_overloaded_virtual 0 -#endif - -/// Warn when the packed attribute has no effect on -/// struct layout -#define DIAG_packed "-Wpacked" -#if 1 -# define HAS_DIAG_packed 1 -#else -# define HAS_DIAG_packed 0 -#endif - -/// Warn about packed bit-fields whose offset changed -/// in GCC 4.4 -#define DIAG_packed_bitfield_compat "-Wpacked-bitfield-compat" -#if GCC -# define HAS_DIAG_packed_bitfield_compat 1 -#else -# define HAS_DIAG_packed_bitfield_compat 0 -#endif - -/// Warn when padding is required to align structure -/// members -#define DIAG_padded "-Wpadded" -#if 1 -# define HAS_DIAG_padded 1 -#else -# define HAS_DIAG_padded 0 -#endif - -/// Warn about possibly missing parentheses -#define DIAG_parentheses "-Wparentheses" -#if 1 -# define HAS_DIAG_parentheses 1 -#else -# define HAS_DIAG_parentheses 0 -#endif - -/// Issue warnings needed for strict compliance to -/// the standard -// a bit too noisy -//EG48("-Wpedantic") -// lots of minor extensions are used -#define DIAG_pedantic "-Wpedantic" -#if GCC >= 408 || CLANG -# define HAS_DIAG_pedantic 1 -#else -# define HAS_DIAG_pedantic 0 -#endif - -/// Warn when converting the type of pointers to -/// member functions -#define DIAG_pmf_conversions "-Wpmf-conversions" -#if GCC -# define HAS_DIAG_pmf_conversions 1 -#else -# define HAS_DIAG_pmf_conversions 0 -#endif - -/// Warn about function pointer arithmetic -#define DIAG_pointer_arith "-Wpointer-arith" -#if 1 -# define HAS_DIAG_pointer_arith 1 -#else -# define HAS_DIAG_pointer_arith 0 -#endif - -/// Warn about misuses of pragmas -#define DIAG_pragmas "-Wpragmas" -#if GCC -# define HAS_DIAG_pragmas 1 -#else -# define HAS_DIAG_pragmas 0 -#endif - -/// Warn about multiple declarations of the same -/// object -#define DIAG_redundant_decls "-Wredundant-decls" -#if 1 -# define HAS_DIAG_redundant_decls 1 -#else -# define HAS_DIAG_redundant_decls 0 -#endif - -/// Warn when the compiler reorders code -#define DIAG_reorder "-Wreorder" -#if 1 -# define HAS_DIAG_reorder 1 -#else -# define HAS_DIAG_reorder 0 -#endif - -/// Warn about returning a pointer/reference to a -/// local or temporary variable. -#define DIAG_return_local_addr "-Wreturn-local-addr" -#if GCC >= 408 -# define HAS_DIAG_return_local_addr 1 -#else -# define HAS_DIAG_return_local_addr 0 -#endif - -/// Warn whenever a function's return type defaults -/// to "int" (C), or about inconsistent return types -/// (C++") -#define DIAG_return_type "-Wreturn-type" -#if 1 -# define HAS_DIAG_return_type 1 -#else -# define HAS_DIAG_return_type 0 -#endif - -/// Warn about possible violations of sequence point -/// rules -#define DIAG_sequence_point "-Wsequence-point" -#if 1 -# define HAS_DIAG_sequence_point 1 -#else -# define HAS_DIAG_sequence_point 0 -#endif - -/// Warn when one local variable shadows another -#define DIAG_shadow "-Wshadow" -#if 1 -# define HAS_DIAG_shadow 1 -#else -# define HAS_DIAG_shadow 0 -#endif - -/// Warn about signed-unsigned comparisons -#define DIAG_sign_compare "-Wsign-compare" -#if 1 -# define HAS_DIAG_sign_compare 1 -#else -# define HAS_DIAG_sign_compare 0 -#endif - -/// Warn when overload promotes from unsigned to -/// signed -#define DIAG_sign_promo "-Wsign-promo" -#if 1 -# define HAS_DIAG_sign_promo 1 -#else -# define HAS_DIAG_sign_promo 0 -#endif - -/// This switch lacks documentation -#define DIAG_sizeof_pointer_memaccess "-Wsizeof-pointer-memaccess" -#if GCC >= 408 -# define HAS_DIAG_sizeof_pointer_memaccess 1 -#else -# define HAS_DIAG_sizeof_pointer_memaccess 0 -#endif - -/// Warn when not issuing stack smashing protection -/// for some reason -#define DIAG_stack_protector "-Wstack-protector" -#if 1 -# define HAS_DIAG_stack_protector 1 -#else -# define HAS_DIAG_stack_protector 0 -#endif - -/// Warn about code which might break strict aliasing -/// rules -#define DIAG_strict_aliasing "-Wstrict-aliasing" -#if 1 -# define HAS_DIAG_strict_aliasing 1 -#else -# define HAS_DIAG_strict_aliasing 0 -#endif - -/// Warn about uncasted NULL used as sentinel -#define DIAG_strict_null_sentinel "-Wstrict-null-sentinel" -#if GCC -# define HAS_DIAG_strict_null_sentinel 1 -#else -# define HAS_DIAG_strict_null_sentinel 0 -#endif - -/// Warn about optimizations that assume that signed -/// overflow is undefined -#define DIAG_strict_overflow "-Wstrict-overflow" -#if 1 -# define HAS_DIAG_strict_overflow 1 -#else -# define HAS_DIAG_strict_overflow 0 -#endif - -/// Warn about enumerated switches, with no default, -/// missing a case -#define DIAG_switch "-Wswitch" -#if 1 -# define HAS_DIAG_switch 1 -#else -# define HAS_DIAG_switch 0 -#endif - -/// Warn about enumerated switches missing a -/// "default:" statement -#define DIAG_switch_default "-Wswitch-default" -#if 1 -# define HAS_DIAG_switch_default 1 -#else -# define HAS_DIAG_switch_default 0 -#endif - -/// Warn about all enumerated switches missing a -/// specific case -#define DIAG_switch_enum "-Wswitch-enum" -#if 1 -# define HAS_DIAG_switch_enum 1 -#else -# define HAS_DIAG_switch_enum 0 -#endif - -/// Warn when __sync_fetch_and_nand and -/// __sync_nand_and_fetch built-in functions are used -#define DIAG_sync_nand "-Wsync-nand" -#if GCC -# define HAS_DIAG_sync_nand 1 -#else -# define HAS_DIAG_sync_nand 0 -#endif - -/// Warn whenever a trampoline is generated -#define DIAG_trampolines "-Wtrampolines" -#if GCC -# define HAS_DIAG_trampolines 1 -#else -# define HAS_DIAG_trampolines 0 -#endif - -/// Warn if trigraphs are encountered that might -/// affect the meaning of the program -#define DIAG_trigraphs "-Wtrigraphs" -#if 1 -# define HAS_DIAG_trigraphs 1 -#else -# define HAS_DIAG_trigraphs 0 -#endif - -/// Warn if a comparison is always true or always -/// false due to the limited range of the data type -#define DIAG_type_limits "-Wtype-limits" -#if 1 -# define HAS_DIAG_type_limits 1 -#else -# define HAS_DIAG_type_limits 0 -#endif - -/// Warn if an undefined macro is used in an #if -/// directive -#define DIAG_undef "-Wundef" -#if 1 -# define HAS_DIAG_undef 1 -#else -# define HAS_DIAG_undef 0 -#endif - -/// Warn about uninitialized automatic variables -#define DIAG_uninitialized "-Wuninitialized" -#if 1 -# define HAS_DIAG_uninitialized 1 -#else -# define HAS_DIAG_uninitialized 0 -#endif - -/// Warn about unrecognized pragmas -#define DIAG_unknown_pragmas "-Wunknown-pragmas" -#if 1 -# define HAS_DIAG_unknown_pragmas 1 -#else -# define HAS_DIAG_unknown_pragmas 0 -#endif - -/// -// Not an error because of some remaining enum+default -#define DIAG_unreachable_code "-Wunreachable-code" -#if CLANG -# define HAS_DIAG_unreachable_code 1 -#else -# define HAS_DIAG_unreachable_code 0 -#endif - -/// Warn if the loop cannot be optimized due to -/// nontrivial assumptions. -#define DIAG_unsafe_loop_optimizations "-Wunsafe-loop-optimizations" -#if GCC -# define HAS_DIAG_unsafe_loop_optimizations 1 -#else -# define HAS_DIAG_unsafe_loop_optimizations 0 -#endif - -/// Warn when a function parameter is only set, -/// otherwise unused -#define DIAG_unused_but_set_parameter "-Wunused-but-set-parameter" -#if GCC -# define HAS_DIAG_unused_but_set_parameter 1 -#else -# define HAS_DIAG_unused_but_set_parameter 0 -#endif - -/// Warn when a variable is only set, otherwise unused -#define DIAG_unused_but_set_variable "-Wunused-but-set-variable" -#if GCC -# define HAS_DIAG_unused_but_set_variable 1 -#else -# define HAS_DIAG_unused_but_set_variable 0 -#endif - -/// Warn when a function is unused -#define DIAG_unused_function "-Wunused-function" -#if 1 -# define HAS_DIAG_unused_function 1 -#else -# define HAS_DIAG_unused_function 0 -#endif - -/// Warn when a label is unused -#define DIAG_unused_label "-Wunused-label" -#if 1 -# define HAS_DIAG_unused_label 1 -#else -# define HAS_DIAG_unused_label 0 -#endif - -/// Warn when typedefs locally defined in a function -/// are not used -#define DIAG_unused_local_typedefs "-Wunused-local-typedefs" -#if GCC >= 407 -# define HAS_DIAG_unused_local_typedefs 1 -#else -# define HAS_DIAG_unused_local_typedefs 0 -#endif - -/// Warn about macros defined in the main file that -/// are not used -#define DIAG_unused_macros "-Wunused-macros" -#if 1 -# define HAS_DIAG_unused_macros 1 -#else -# define HAS_DIAG_unused_macros 0 -#endif - -/// Warn when a function parameter is unused -#define DIAG_unused_parameter "-Wunused-parameter" -#if 1 -# define HAS_DIAG_unused_parameter 1 -#else -# define HAS_DIAG_unused_parameter 0 -#endif - -/// Warn if a caller of a function, marked with -/// attribute warn_unused_result, does not use its -/// return value -#define DIAG_unused_result "-Wunused-result" -#if 1 -# define HAS_DIAG_unused_result 1 -#else -# define HAS_DIAG_unused_result 0 -#endif - -/// Warn when an expression value is unused -#define DIAG_unused_value "-Wunused-value" -#if 1 -# define HAS_DIAG_unused_value 1 -#else -# define HAS_DIAG_unused_value 0 -#endif - -/// Warn when a variable is unused -#define DIAG_unused_variable "-Wunused-variable" -#if 1 -# define HAS_DIAG_unused_variable 1 -#else -# define HAS_DIAG_unused_variable 0 -#endif - -/// Warn about useless casts -#define DIAG_useless_cast "-Wuseless-cast" -#if GCC >= 408 -# define HAS_DIAG_useless_cast 1 -#else -# define HAS_DIAG_useless_cast 0 -#endif - -/// Warn about questionable usage of the macros used -/// to retrieve variable arguments -#define DIAG_varargs "-Wvarargs" -#if GCC >= 408 -# define HAS_DIAG_varargs 1 -#else -# define HAS_DIAG_varargs 0 -#endif - -/// Warn about using variadic macros -#define DIAG_variadic_macros "-Wvariadic-macros" -#if 1 -# define HAS_DIAG_variadic_macros 1 -#else -# define HAS_DIAG_variadic_macros 0 -#endif - -/// Warn when a vector operation is compiled -/// outside the SIMD -#define DIAG_vector_operation_performance "-Wvector-operation-performance" -#if GCC >= 407 -# define HAS_DIAG_vector_operation_performance 1 -#else -# define HAS_DIAG_vector_operation_performance 0 -#endif - -/// Warn if a virtual base has a non-trivial move -/// assignment operator -#define DIAG_virtual_move_assign "-Wvirtual-move-assign" -#if GCC >= 408 -# define HAS_DIAG_virtual_move_assign 1 -#else -# define HAS_DIAG_virtual_move_assign 0 -#endif - -/// Warn if a variable length array is used -#define DIAG_vla "-Wvla" -#if 1 -# define HAS_DIAG_vla 1 -#else -# define HAS_DIAG_vla 0 -#endif - -/// Warn when a register variable is declared volatile -#define DIAG_volatile_register_var "-Wvolatile-register-var" -#if 1 -# define HAS_DIAG_volatile_register_var 1 -#else -# define HAS_DIAG_volatile_register_var 0 -#endif - -/// In C++, nonzero means warn about deprecated -/// conversion from string literals to 'char *'. In -/// C, similar warning, except that the conversion is -/// of course not deprecated by the ISO C standard. -#define DIAG_write_strings "-Wwrite-strings" -#if 1 -# define HAS_DIAG_write_strings 1 -#else -# define HAS_DIAG_write_strings 0 -#endif - -/// Warn when a literal '0' is used as null -/// pointer -#define DIAG_zero_as_null_pointer_constant "-Wzero-as-null-pointer-constant" -#if GCC >= 407 -# define HAS_DIAG_zero_as_null_pointer_constant 1 -#else -# define HAS_DIAG_zero_as_null_pointer_constant 0 -#endif -} // namespace tmwa |