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.


Anmelden zum Antworten