[Development] Switch of MinGW toolchain for Qt 5.1

Koehne Kai Kai.Koehne at digia.com
Thu Apr 4 11:38:36 CEST 2013


Hi there,

I'd like to update the recommended 32 bit MinGW toolchain (that we also ship in binary installers) for 5.1 from

  x32-4.7.2-release-posix-sjlj-rev8
to
  x32-4.8.0-release-posix-dwarf-rev1

The recommended 64 bit toolchain would change accordingly from
  
  x64-4.7.2-release-posix-sjlj-rev8
to
  x64-4.8.0-release-posix-seh-rev1

Download links:

http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.0/32-bit/threads-posix/dwarf/x32-4.8.0-release-posix-dwarf-rev1.7z/download
http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.0/64-bit/threads-posix/seh/x64-4.8.0-release-posix-seh-rev1.7z/download

Since this is a major upgrade, I'd like to invite anyone interested to give the combination a try early on, preferably before we release 5.1.0 :) The upgrade would however mean that all users would have to re-compile their apps (mixing the old and new toolchain is not supported).

REASONS:

It turned out that the SJLJ exception model of the existing toolchain has a severe performance penalty for any Qt app, see e.g.

http://sourceforge.net/mailarchive/message.php?msg_id=30532139
and https://bugreports.qt-project.org/browse/QTBUG-29653

With gcc 4.8.0 64 bit there's now SEH, which I understood is superior to SJLJ in any way. For 32 bit there's dwarf, which has problems when it comes to throwing exceptions to 'alien' stack frames (think of windows callbacks). There are also issues when using LoadLibrary without FreeLibrary, or mixing static and dynamic libgcc_s_dw2 linkage. Anyhow, I think these issues do not outweigh the heavy performance penalty for SJLJ.

Apart from SEH exception handling this gcc 4.8 brings lots of general improvements. If we still however find blockers with gcc 4.8.0 an alternative would be to go for 4.7.2 / 4.7.3, but still switch the exception model to dwarf for 32 bit.

Regards

Kai



More information about the Development mailing list