Skip to content

Warning switches #6435

Open
Open
@ppenzin

Description

@ppenzin

While working on #6430 I've noticed that there are no includes for unicode/uchar.h, which was puzzling at first, but then I realized that-Wno-implicit-function-declaration set up in CMake inhibits complaints about that.

Implicit function declarations are dangerous, because they can hide mismatches between definition and use (which actually happened when ICU failed to build in time for the link). It is a warning (rather than an error) due to backwards compatibility with older C standards.

But there are even more:

  • -Wno-ignored-attributes
  • -Wno-deprecated-declarations
  • -Wno-parentheses-equality
  • -Wno-missing-braces
  • -Wno-reorder
  • -Wno-microsoft
  • -Wno-unused-value
  • -Wno-int-to-void-pointer-cast
  • -Wno-invalid-offsetof
  • -Wno-undefined-inline
  • -Wno-inconsistent-missing-override
  • -Wno-c++14-extensions
  • -Wno-macro-redefined
  • -Wno-pragmas
  • -Wno-invalid-token-paste
  • -Wno-format
  • -Wno-invalid-noreturn
  • -Wno-null-arithmetic
  • -Wno-tautological-constant-out-of-range-compare
  • -Wno-tautological-undefined-compare
  • -Wno-address-of-temporary
  • -Wno-null-conversion
  • -Wno-return-type
  • -Wno-switch
  • -Wno-implicit-function-declaration (both C and C++)
  • -Wno-int-to-pointer-cast
  • -Wno-tautological-constant-compare
  • -Wno-enum-compare-switch
  • -Wno-unknown-warning-option
        # notes..
        # -Wno-address-of-temporary  # vtinfo.h, VirtualTableInfo<T>::RegisterVirtualTable
        # -Wno-null-conversion # Check shmemory.cpp and cs.cpp here...
        # -Wno-return-type # switch unreachable code
        # -Wno-switch # switch values not handled
        # -W-enum-compare-switch # throws warning on enum1 == enum2 where both
        # enums represent same value but do not share the type. ie. we use both AsmJsType
        # and AsmJsRetType interchangably and filter things out by `default:` case.
        # -W-tautological-constant-compare throws warning for checks known at compile time.
        # Some of those checks are optimized out during compile / lto time, and others
        # are platform / compiler dependent.
        # -Wno-unknown-warning-option ... well, some of the new switches are not
        # recognized by older compilers and they fail. So, put this one and not fail

Does anybody remember what was motivation for adding those, aside from the ones that have a note below?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions