[PATCH] qla2xxx: rewrite code to avoid hitting gcc bug 70646

From: Denys Vlasenko
Date: Fri Apr 15 2016 - 06:36:37 EST


More info here:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70646

Signed-off-by: Denys Vlasenko <dvlasenk@xxxxxxxxxx>
CC: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx>
CC: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
CC: qla2xxx-upstream@xxxxxxxxxx
CC: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
CC: linux-scsi@xxxxxxxxxxxxxxx
CC: linux-kernel@xxxxxxxxxxxxxxx
---
drivers/scsi/qla2xxx/qla_attr.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index 4dc06a13..2dd9c72 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -2003,9 +2003,14 @@ static void
qla2x00_get_host_fabric_name(struct Scsi_Host *shost)
{
scsi_qla_host_t *vha = shost_priv(shost);
+ /*
+ * This can trigger gcc 4.9/5.3 bug.
+ * See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70646
uint8_t node_name[WWN_SIZE] = { 0xFF, 0xFF, 0xFF, 0xFF, \
0xFF, 0xFF, 0xFF, 0xFF};
u64 fabric_name = wwn_to_u64(node_name);
+ */
+ u64 fabric_name = (u64)(s64)-1; /* the same as above */

if (vha->device_flags & SWITCH_FOUND)
fabric_name = wwn_to_u64(vha->fabric_node_name);
--
1.8.1.4