• D
    Fix build with GCC 8 new switch fallthrough warnings · 75f4813c
    Daniel P. Berrangé 提交于
    GCC 8 became more fussy about detecting switch
    fallthroughs. First it doesn't like it if you have
    a fallthrough attribute that is not before a case
    statement. e.g.
    
       FOO:
       BAR:
       WIZZ:
          ATTRIBUTE_FALLTHROUGH;
    
    Is unacceptable as there's no final case statement,
    so while FOO & BAR are falling through, WIZZ is
    not falling through. IOW, GCC wants us to write
    
      FOO:
      BAR:
        ATTRIBUTE_FALLTHROUGH;
      WIZZ:
    
    Second, it will report risk of fallthrough even if you
    have a case statement for every single enum value, but
    only if the switch is nested inside another switch and
    the outer case statement has no final break. This is
    is arguably valid because despite the fact that we have
    cast from "int" to the enum typedef, nothing guarantees
    that the variable we're switching on only contains values
    that have corresponding switch labels. e.g.
    
       int domstate = 87539319;
       switch ((virDomainState)domstate) {
          ...
       }
    
    will not match enum value, but also not raise any kind
    of compiler warning. So it is right to complain about
    risk of fallthrough if no default: is present.
    Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
    75f4813c
qemu_domain.c 354.4 KB