Skip to content
  • Marc-André Lureau's avatar
    90654868
    build-sys: compile with -Og or -O1 when --enable-debug · 90654868
    Marc-André Lureau authored
    When --enable-debug is turned on, configure doesn't set -O level, and
    uses default compiler -O0 level, which is slow.
    
    Instead, use -Og if supported by the compiler (optimize debugging
    experience), or -O1 (keeps code somewhat debuggable and works around
    compiler bugs).
    
    Unfortunately, gcc has many false-positive maybe-uninitialized
    errors with Og and O1 (f27 gcc 7.2.1 20170915):
    
    /home/elmarco/src/qemu/hw/ipmi/isa_ipmi_kcs.c: In function ‘ipmi_kcs_ioport_read’:
    /home/elmarco/src/qemu/hw/ipmi/isa_ipmi_kcs.c:279:12: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
         return ret;
                ^~~
    cc1: all warnings being treated as errors
    make: *** [/home/elmarco/src/qemu/rules.mak:66: hw/ipmi/isa_ipmi_kcs.o] Error 1
    make: *** Waiting for unfinished jobs....
    /home/elmarco/src/qemu/hw/ide/ahci.c: In function ‘ahci_populate_sglist’:
    /home/elmarco/src/qemu/hw/ide/ahci.c:903:58: error: ‘tbl_entry_size’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
             if ((off_idx == -1) || (off_pos < 0) || (off_pos > tbl_entry_size)) {
                                                     ~~~~~~~~~^~~~~~~~~~~~~~~~~
    cc1: all warnings being treated as errors
    make: *** [/home/elmarco/src/qemu/rules.mak:66: hw/ide/ahci.o] Error 1
    /home/elmarco/src/qemu/hw/display/qxl.c: In function ‘qxl_add_memslot’:
    /home/elmarco/src/qemu/hw/display/qxl.c:1397:52: error: ‘pci_start’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
         memslot.virt_end   = virt_start + (guest_end   - pci_start);
                                           ~~~~~~~~~~~~~^~~~~~~~~~~~
    /home/elmarco/src/qemu/hw/display/qxl.c:1389:9: error: ‘pci_region’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
             qxl_set_guest_bug(d, "%s: pci_region = %d", __func__, pci_region);
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cc1: all warnings being treated as errors
    
    There seems to be a long list of related bugs in upstream GCC, some of
    them are being fixed very recently:
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
    
    
    
    For now, let's workaround it by using Wno-maybe-uninitialized (gcc-only).
    
    Suggested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
    Message-Id: <20180104160523.22995-5-marcandre.lureau@redhat.com>
    Tested-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    90654868
    build-sys: compile with -Og or -O1 when --enable-debug
    Marc-André Lureau authored
    When --enable-debug is turned on, configure doesn't set -O level, and
    uses default compiler -O0 level, which is slow.
    
    Instead, use -Og if supported by the compiler (optimize debugging
    experience), or -O1 (keeps code somewhat debuggable and works around
    compiler bugs).
    
    Unfortunately, gcc has many false-positive maybe-uninitialized
    errors with Og and O1 (f27 gcc 7.2.1 20170915):
    
    /home/elmarco/src/qemu/hw/ipmi/isa_ipmi_kcs.c: In function ‘ipmi_kcs_ioport_read’:
    /home/elmarco/src/qemu/hw/ipmi/isa_ipmi_kcs.c:279:12: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
         return ret;
                ^~~
    cc1: all warnings being treated as errors
    make: *** [/home/elmarco/src/qemu/rules.mak:66: hw/ipmi/isa_ipmi_kcs.o] Error 1
    make: *** Waiting for unfinished jobs....
    /home/elmarco/src/qemu/hw/ide/ahci.c: In function ‘ahci_populate_sglist’:
    /home/elmarco/src/qemu/hw/ide/ahci.c:903:58: error: ‘tbl_entry_size’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
             if ((off_idx == -1) || (off_pos < 0) || (off_pos > tbl_entry_size)) {
                                                     ~~~~~~~~~^~~~~~~~~~~~~~~~~
    cc1: all warnings being treated as errors
    make: *** [/home/elmarco/src/qemu/rules.mak:66: hw/ide/ahci.o] Error 1
    /home/elmarco/src/qemu/hw/display/qxl.c: In function ‘qxl_add_memslot’:
    /home/elmarco/src/qemu/hw/display/qxl.c:1397:52: error: ‘pci_start’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
         memslot.virt_end   = virt_start + (guest_end   - pci_start);
                                           ~~~~~~~~~~~~~^~~~~~~~~~~~
    /home/elmarco/src/qemu/hw/display/qxl.c:1389:9: error: ‘pci_region’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
             qxl_set_guest_bug(d, "%s: pci_region = %d", __func__, pci_region);
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    cc1: all warnings being treated as errors
    
    There seems to be a long list of related bugs in upstream GCC, some of
    them are being fixed very recently:
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=24639
    
    
    
    For now, let's workaround it by using Wno-maybe-uninitialized (gcc-only).
    
    Suggested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
    Message-Id: <20180104160523.22995-5-marcandre.lureau@redhat.com>
    Tested-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Loading