3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-08-02 12:13:25 +00:00
z3/cmake
davedets d46fbad3b6
Make implicit switch case fall-throughs explicit (#10284)
This is another PR towards the goal of getting Z3 to compile cleanly
when included via FetchContents into clang-tidy, which uses a pretty
strict set of warnings.

This PR enable the "-Wimplicit-fallthrough" warning, then fix all the
warnings this gets
in the clang build, by:
* Augmenting UNREACHABLE to add __builtin_unreachable(), which
suppresses
warnings for fallthrough in that cse.
* Adding Z3_fallthrough in many cases, to make it clear that
fallthroughs are intentional.
* Adding [[noreturn]] to functions that throw, so the compiler knows
they don't fall through to the next case.
* In a couple of cases, there's a fall-through to a default case, which
does "break", or "return nullptr". In those cases, I duplicated the
action in the preceding case, to make it more self-contained, and robust
in the face of change.

In some cases, I am concerned about whether the warnings are identifying
real bugs. For example, the fall-throughs in these files seem at least a
little suspect:
nnf.cpp
seq_rewriter.cpp
lar_solver.cpp 

while very probably correct, also seem at least a tiny bit suspect.
However, this PR does *not* attempt to change any behavior, only to
silence the warnings. It would be great if somebody with more knowledge
of the code could vet these cases. If vetted, the explicit presence of
the Z3_fallthrough would reassure future readers of the code that the
fall-through is intentional, not accidental.
2026-07-29 09:05:42 -07:00
..
modules Bump dotnet example target framework from netcoreapp2.0 to net8.0 (#9531) 2026-05-14 15:17:41 -07:00
check_link_atomic.cmake cmake: skip std::atomic link check for Emscripten and single-threaded builds (#9932) 2026-06-23 14:05:02 -06:00
cmake_uninstall.cmake.in [CMake] Move CMake files into their intended location so the 2017-06-12 11:59:00 +01:00
compiler_lto.cmake clean up CMake code (#5182) 2021-04-14 10:29:15 -07:00
compiler_warnings.cmake Make implicit switch case fall-throughs explicit (#10284) 2026-07-29 09:05:42 -07:00
cxx_compiler_flags_overrides.cmake [CMake] Move CMake files into their intended location so the 2017-06-12 11:59:00 +01:00
git_utils.cmake Use '--tags' rather than '--long' for git describe. Closes #6823 (#7833) 2025-08-29 14:15:38 -07:00
msvc_legacy_quirks.cmake clean up CMake code (#5182) 2021-04-14 10:29:15 -07:00
target_arch_detect.cmake Change from BINARY_DIR to PROJECT_BINARY_DIR 2019-05-15 11:25:40 -07:00
target_arch_detect.cpp set ARM64 if detected under OSX 2022-04-07 08:35:56 +02:00
z3_add_component.cmake cmake: prevent install_tactic.deps from triggering spurious rebuilds on reconfigure (#10102) 2026-07-12 20:07:41 -07:00
z3_add_cxx_flag.cmake [CMake] Change the WARNINGS_AS_ERRORS option from BOOL to STRING 2017-07-09 14:34:30 +01:00
z3_append_linker_flag_list_to_target.cmake mux 2019-06-05 09:06:17 +01:00
Z3Config.cmake.in Fix Z3Config.cmake.in when generating a static library (#5555) 2021-09-17 18:03:10 +01:00