On 3/15/23 20:10, Michal Privoznik wrote:
Another option might be to just turn off optimization for the whole
virnuma.c file when compiling with clang. Except not really, because
meson deliberately doesn't allow that:
https://github.com/mesonbuild/meson/issues/1367
On the other hand, that would solve only the problem at hand and not the
root cause. So maybe we need a bigger hammer after all. Something among
these lines:
diff --git i/meson.build w/meson.build
index 319ed790f9..d018693ca0 100644
--- i/meson.build
+++ w/meson.build
@@ -206,6 +206,12 @@ libvirt_lib_version =
'@0@.@1@.@2(a)'.format(libvirt_so_version, libvirt_age, libv
cc = meson.get_compiler('c')
cc_flags = []
+compiler_warn = 0
+if cc.get_id() == 'clang'
+ cc_flags += [ '-O0' ]
+ compiler_warn = 1
+endif
+
git_werror = get_option('git_werror')
if (git_werror.enabled() or git_werror.auto()) and git and not
get_option('werror')
cc_flags += [ '-Werror' ]
@@ -2268,3 +2274,7 @@ if conf.has('WITH_QEMU')
}
summary(priv_summary, section: 'Privileges')
endif
+
+if compiler_warn != 0
+ summary({'compiler': 'broken !!! Forcibly turning off optimizations. Go
unbreak your compiler !!!'}, section: 'Compiler')
+endif
Of course, we could do more clever check (from my example in cover
letter whether Y() calls X()), but I don't know how to write that in
meson. But since we officially aim on GCC an Clang and only the latter
is broken I guess checking for compiler's ID is just fine.
Michal