Get rid of GCC false -Wmissing-noreturn warnings; remove unnecessary warning suppression code#1337
Conversation
|
CLANG-FORMAT TEST - PASSED |
|
CMAKE-FORMAT TEST - PASSED |
|
Status Flag 'Pre-Test Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging |
|
Status Flag 'Pre-Test Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED by label AT: PRE-TEST INSPECTED! Autotester is Removing Label; this inspection will remain valid until a new commit to source branch is performed. |
|
Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects: Pull Request Auto Testing STARTING (click to expand)Build InformationTest Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements
Build InformationTest Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_MR-2
Build InformationTest Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_MT-2
Build InformationTest Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-core_Make-Dist
Build InformationTest Name: SST__AutotestGen2_NewFW_OSX-14-XC15-ARM2_OMPI-4.1.6_PY3.10_sst-elements
Using Repos:
Pull Request Author: leekillough |
|
Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED Pull Request Auto Testing has PASSED (click to expand)Build InformationTest Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements
Build InformationTest Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_MR-2
Build InformationTest Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-elements_MT-2
Build InformationTest Name: SST__AutotestGen2_NewFW_sst-test_OMPI-4.1.4_PY3.6_sst-core_Make-Dist
Build InformationTest Name: SST__AutotestGen2_NewFW_OSX-14-XC15-ARM2_OMPI-4.1.6_PY3.10_sst-elements
|
|
Status Flag 'Pre-Merge Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED AND APPROVED by [ feldergast ]! |
|
Status Flag 'Pull Request AutoTester' - Pull Request MUST BE MERGED MANUALLY BY Project Team - This Repo does not support Automerge |
|
Status Flag 'Pull Request AutoTester' - Pull Request MUST BE MERGED MANUALLY BY Project Team - This Repo does not support Automerge |
|
GCC bug submitted: |
This adds
DISABLE_WARN_MISSING_NORETURN, to address GCC-Wmissing-noreturnfalse warnings introduced by recent PRs. It is only needed in.ccfiles which define virtual functions which do not return; it is not needed in.hfiles and there is no change needed for the virtual function declarations.GCC (but not Clang) has a bug where
-Wmissing-noreturnwarnings are printed for virtual functions defined outside of class which call[[noreturn]]functions but are not themselves marked[[noreturn]].[[noreturn]]is a function attribute, not a type attribute, and is not inherited. A call to a virtual function with dynamic dispatch cannot be considered[[noreturn]]even if its declarations are marked[[noreturn]], because it can be overriden with a function which is not[[noreturn]], and a virtual function should not be warned about not being marked[[noreturn]]even if it calls a[[noreturn]]function, because[[noreturn]]adds no value to a virtual function and only serves to remove a false warning. There is discussion here, here and here.This also removes some warning suppression methods which are now unnecessary:
UNUSED()macro can suppress warnings about unused variables and function parametersOutput::fatal()is called, since it is now marked[[noreturn]]