graphic: 0.961 architecture: 0.950 permissions: 0.939 device: 0.930 register: 0.924 debug: 0.915 performance: 0.913 assembly: 0.900 arm: 0.899 user-level: 0.894 socket: 0.890 virtual: 0.884 vnc: 0.866 TCG: 0.851 PID: 0.846 kernel: 0.845 risc-v: 0.843 VMM: 0.841 files: 0.829 hypervisor: 0.823 KVM: 0.810 network: 0.805 semantic: 0.799 mistranslation: 0.777 boot: 0.773 peripherals: 0.740 ppc: 0.716 x86: 0.598 i386: 0.294 hw/ipmi/isa_ipmi_bt.c:283: suspect use of macro ? I just had a go at compiling qemu trunk with llvm trunk. It said: hw/ipmi/isa_ipmi_bt.c:283:31: warning: logical not is only applied to the left hand side of this bitwise operator [-Wlogical-not-parentheses] Source code is IPMI_BT_SET_HBUSY(ib->control_reg, !IPMI_BT_GET_HBUSY(ib->control_reg)); That use of ! causes trouble. The SET and GET macros are defined as: #define IPMI_BT_GET_HBUSY(d) (((d) >> IPMI_BT_HBUSY_BIT) & 0x1) #define IPMI_BT_SET_HBUSY(d, v) (d) = (((d) & ~IPMI_BT_HBUSY_MASK) | \ (((v & 1) << IPMI_BT_HBUSY_BIT))) I can make the compiler shut up by adding extra () in the last use of v in the SET macro, like this: #define IPMI_BT_SET_HBUSY(d, v) (d) = (((d) & ~IPMI_BT_HBUSY_MASK) | \ ((((v) & 1) << IPMI_BT_HBUSY_BIT))) I think this is standard good practice when using macro parameters anyway. From: Corey Minyard