3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-08-02 12:13:25 +00:00
z3/cmake
davedets b902c020ce
Fix uses of gnu anonymous structs. (#10345)
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. (1 more flag after this!)

This one adds the flag -Wgnu-anonymous-struct. Z3 uses this anonymous
struct idiom, usually when using a struct as one of the members of a
union, as in:
```
            union {
                justification *        m_js;
                unsigned               m_lidx;
                struct {
                    enode *            m_lhs;
                    enode *            m_rhs;
                };
            };
```
This is not, strictly speaking, legal C++ (at least according to
Google's AI summary -- and the existence of this flag in Clang implies
that it is a GNU extension). You need to give the struct a member name
in the outer union to prevent the warning.

I'm of two minds on this. On the one hand it's not hurting anything, and
all the major compilers seem to support the idiom. On the other hand,
well, why do we have standards if we're going to ignore them in favor of
de-facto standards?

I submit this PR to show the size of the changes necessary to eliminate
the use of the extension. Personally, I'd do it, but I would gladly
withdraw the PR in favor of one that just silences the warning, if that
was the reviewer's preference.
2026-08-01 11:44:01 -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 Fix uses of gnu anonymous structs. (#10345) 2026-08-01 11:44:01 -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