Bug in gcc-4.7.2 (Mithilfe benötigt)
-
Folgender reduzierter Testcode:
typedef struct { int x; } A; typedef struct { int x; } B; A *aa(A*, B*), *bb(A*, B*), *cc(A*, B*), *dd(A*, B*), *ee(A*, B*); A* fun(unsigned x, A* C, B* Ty) { switch (x) { default: __builtin_unreachable(); case 0: return aa(C, Ty); case 1: return bb(C, Ty); case 2: return cc(C, Ty); case 3: return dd(C, Ty); case 4: return dd(C, Ty); } }
führt bei mir zu einem ICE (segfault) mit
gcc-4.7.2 -mtune=atom -O2 -m64 (oder mx32, nicht aber m32)Bevor ich einen Bugreport schreibe, wüsste ich gerne, ob das Problem am verwendeten Patchset (hier: Gentoo Hardened 4.6.3 p1.11, pie-0.5.2) liegt oder ob das Problem auch auf anderen Distributionen/Betriebssystemen auftritt.
Ich kann das Problem weder mit anderen Versionen (4.6, 4.8) nachvollziehen, noch mit wesentlich anderen Optionen, ist also wahrscheinlich ein eher obskurer Optimierungsbug.
Nebenbei: das Problem tritt beim emerge von llvm auf, ein Schelm wer Böses denkt
-
Passiert auch unter Ubuntu 12.10 (gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1).
-
Passiert auch bei Xubuntu 12.10 mit gcc 4.7.2.
Ebenfalls bei Windows 8 mit MinGW/gcc 4.7.2.
-
Passiert unter Fedora 17 mit gcc 4.7.2 ebenfalls.
-
Danke für die Mithilfe. Nach ein bisschen mehr Herumstöbern bin ich überzeugt, auf Bug #43631 gestossen zu sein. Also besteht Hoffnung, das das Problem demnächst behoben sein wird.