hw/ipmi/isa_ipmi_bt.c:283: suspect use of macro ?
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Fix Released
|
Undecided
|
cminyard |
Bug Description
I just had a go at compiling qemu trunk with
llvm trunk. It said:
hw/ipmi/
Source code is
That use of ! causes trouble. The SET and GET
macros are defined as:
#define IPMI_BT_
#define IPMI_BT_
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_
I think this is standard good practice when using macro parameters anyway.
Changed in qemu: | |
assignee: | nobody → cminyard (minyard) |
status: | New → In Progress |
From: Corey Minyard <email address hidden>
Macro parameters should almost always have () around them when used.
llvm reported an error on this.
Reported in https:/ /bugs.launchpad .net/bugs/ 1651167
Signed-off-by: Corey Minyard <email address hidden> isa_ipmi_ bt.c | 18 +++++++++---------
---
hw/ipmi/
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/hw/ipmi/ isa_ipmi_ bt.c b/hw/ipmi/ isa_ipmi_ bt.c isa_ipmi_ bt.c isa_ipmi_ bt.c GET_CLR_ WR(d) (((d) >> IPMI_BT_CLR_WR_BIT) & 0x1) SET_CLR_ WR(d, v) (d) = (((d) & ~IPMI_BT_ CLR_WR_ MASK) | \ CLR_WR_ BIT))) CLR_WR_ BIT)))
index f036617..8a97314 100644
--- a/hw/ipmi/
+++ b/hw/ipmi/
@@ -40,37 +40,37 @@
#define IPMI_BT_CLR_WR_MASK (1 << IPMI_BT_CLR_WR_BIT)
#define IPMI_BT_
#define IPMI_BT_
- (((v & 1) << IPMI_BT_
+ ((((v) & 1) << IPMI_BT_
#define IPMI_BT_CLR_RD_MASK (1 << IPMI_BT_CLR_RD_BIT) GET_CLR_ RD(d) (((d) >> IPMI_BT_CLR_RD_BIT) & 0x1) SET_CLR_ RD(d, v) (d) = (((d) & ~IPMI_BT_ CLR_RD_ MASK) | \ CLR_RD_ BIT))) CLR_RD_ BIT)))
#define IPMI_BT_
#define IPMI_BT_
- (((v & 1) << IPMI_BT_
+ ((((v) & 1) << IPMI_BT_
#define IPMI_BT_ H2B_ATN_ MASK (1 << IPMI_BT_ H2B_ATN_ BIT) GET_H2B_ ATN(d) (((d) >> IPMI_BT_ H2B_ATN_ BIT) & 0x1) SET_H2B_ ATN(d, v) (d) = (((d) & ~IPMI_BT_ H2B_ATN_ MASK) | \ H2B_ATN_ BIT))) H2B_ATN_ BIT)))
#define IPMI_BT_
#define IPMI_BT_
- (((v & 1) << IPMI_BT_
+ ((((v) & 1) << IPMI_BT_
#define IPMI_BT_ B2H_ATN_ MASK (1 << IPMI_BT_ B2H_ATN_ BIT) GET_B2H_ ATN(d) (((d) >> IPMI_BT_ B2H_ATN_ BIT) & 0x1) SET_B2H_ ATN(d, v) (d) = (((d) & ~IPMI_BT_ B2H_ATN_ MASK) | \ B2H_ATN_ BIT))) B2H_ATN_ BIT)))
#define IPMI_BT_
#define IPMI_BT_
- (((v & 1) << IPMI_BT_
+ ((((v) & 1) << IPMI_BT_
#define IPMI_BT_ SMS_ATN_ MASK (1 << IPMI_BT_ SMS_ATN_ BIT) GET_SMS_ ATN(d) (((d) >> IPMI_BT_ SMS_ATN_ BIT) & 0x1) SET_SMS_ ATN(d, v) (d) = (((d) & ~IPMI_BT_ SMS_ATN_ MASK) | \ SMS_ATN_ BIT))) SMS_ATN_ BIT)))
#define IPMI_BT_
#define IPMI_BT_
- (((v & 1) << IPMI_BT_
+ ((((v) & 1) << IPMI_BT_
#define IPMI_BT_HBUSY_MASK (1 << IPMI_BT_HBUSY_BIT) GET_HBUSY( d) (((d) >> IPMI_BT_HBUSY_BIT) & 0x1) SET_HBUSY( d, v) (d) = (((d) & ~IPMI_BT_ HBUSY_MASK) | \ HBUSY_BIT) )) HBUSY_BIT) ))
#define IPMI_BT_
#define IPMI_BT_
- (((v & 1) << IPMI_BT_
+ ((((v) & 1) << IPMI_BT_
#define IPMI_BT_BBUSY_MASK (1 << IPMI_BT_BBUSY_BIT) GET_BBUSY( d) (((d) >> IPMI_BT_BBUSY_BIT) & 0x1) SET_BBUSY( d, v) (d) = (((d) & ~IPMI_BT_ BBUSY_MASK) | \ BBUSY_BIT) )) BBUSY_BIT) ))
#define IPMI_BT_
#define IPMI_BT_
- (((v & 1) << IPMI_BT_
+ ((((v) & 1) << IPMI_BT_
/* Mask register */ B2H_IRQ_ EN_MASK (1 << IPMI_BT_ B2H_IRQ_ EN_BIT)
@@ -80,12 +80,12 @@
#define IPMI_BT_
#define IPMI_B...