[Qemu-devel] [PATCH v2] ide: fix enum comparison for gcc 4.7

John Snow posted 1 patch 8 years, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170921013821.1673-1-jsnow@redhat.com
Test checkpatch passed
Test docker passed
Test s390x passed
hw/ide/ahci.c             | 2 +-
hw/ide/core.c             | 2 +-
include/hw/ide/internal.h | 3 +--
3 files changed, 3 insertions(+), 4 deletions(-)
[Qemu-devel] [PATCH v2] ide: fix enum comparison for gcc 4.7
Posted by John Snow 8 years, 1 month ago
Apparently GCC gets bent over comparing enum values against zero.
Replace the conditional with something less readable.

Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: John Snow <jsnow@redhat.com>

---

v2: Second verse, same as the first.
Signed-off-by: John Snow <jsnow@redhat.com>
---
 hw/ide/ahci.c             | 2 +-
 hw/ide/core.c             | 2 +-
 include/hw/ide/internal.h | 3 +--
 3 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 24c65df..32d1296 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -184,7 +184,7 @@ static void ahci_check_irq(AHCIState *s)
 static void ahci_trigger_irq(AHCIState *s, AHCIDevice *d,
                              enum AHCIPortIRQ irqbit)
 {
-    g_assert(irqbit >= 0 && irqbit < 32);
+    g_assert((unsigned)irqbit < 32);
     uint32_t irq = 1U << irqbit;
     uint32_t irqstat = d->port_regs.irq_stat | irq;
 
diff --git a/hw/ide/core.c b/hw/ide/core.c
index a19bd90..d63eb4a 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -68,7 +68,7 @@ const char *IDE_DMA_CMD_lookup[IDE_DMA__COUNT] = {
 
 static const char *IDE_DMA_CMD_str(enum ide_dma_cmd enval)
 {
-    if (enval >= IDE_DMA__BEGIN && enval < IDE_DMA__COUNT) {
+    if ((unsigned)enval < IDE_DMA__COUNT) {
         return IDE_DMA_CMD_lookup[enval];
     }
     return "DMA UNKNOWN CMD";
diff --git a/include/hw/ide/internal.h b/include/hw/ide/internal.h
index 180e00e..e641012 100644
--- a/include/hw/ide/internal.h
+++ b/include/hw/ide/internal.h
@@ -333,8 +333,7 @@ struct unreported_events {
 };
 
 enum ide_dma_cmd {
-    IDE_DMA__BEGIN = 0,
-    IDE_DMA_READ = IDE_DMA__BEGIN,
+    IDE_DMA_READ = 0,
     IDE_DMA_WRITE,
     IDE_DMA_TRIM,
     IDE_DMA_ATAPI,
-- 
2.9.5


Re: [Qemu-devel] [PATCH v2] ide: fix enum comparison for gcc 4.7
Posted by Stefan Hajnoczi 8 years, 1 month ago
On Wed, Sep 20, 2017 at 09:38:21PM -0400, John Snow wrote:
> Apparently GCC gets bent over comparing enum values against zero.
> Replace the conditional with something less readable.
> 
> Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> Signed-off-by: John Snow <jsnow@redhat.com>
> 
> ---
> 
> v2: Second verse, same as the first.
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>  hw/ide/ahci.c             | 2 +-
>  hw/ide/core.c             | 2 +-
>  include/hw/ide/internal.h | 3 +--
>  3 files changed, 3 insertions(+), 4 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

Re: [Qemu-devel] [PATCH v2] ide: fix enum comparison for gcc 4.7
Posted by Peter Maydell 8 years, 1 month ago
On 21 September 2017 at 13:25, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> On Wed, Sep 20, 2017 at 09:38:21PM -0400, John Snow wrote:
>> Apparently GCC gets bent over comparing enum values against zero.
>> Replace the conditional with something less readable.
>>
>> Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>> Signed-off-by: John Snow <jsnow@redhat.com>
>>
>> ---
>>
>> v2: Second verse, same as the first.
>> Signed-off-by: John Snow <jsnow@redhat.com>
>> ---
>>  hw/ide/ahci.c             | 2 +-
>>  hw/ide/core.c             | 2 +-
>>  include/hw/ide/internal.h | 3 +--
>>  3 files changed, 3 insertions(+), 4 deletions(-)
>
> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

Thanks, applied to master as a buildfix.

-- PMM