gcc 2.95.[34] - więcej

Jakub Bogusz qboosh w prioris.mini.pw.edu.pl
Nie, 21 Paź 2001, 15:03:10 CEST


Tutaj też puszczę, może ktoś znajdzie coś więcej i będziemy mieli
działający kompilator...
(workaround to nie używać -mno-ieee-fp na i686, ale nie w tym rzecz)

---
Newsgroups: pl.comp.os.linux.programowanie,pl.comp.os.linux
Subject: Błąd w gcc 2.95.3 (i 2.95.4-prerelease)
Followup-To: pl.comp.os.linux.programowanie
Date: Sun, 21 Oct 2001 12:55:54 +0200
Message-Id: <slrn9t5adq.hon.qboosh w fngna.oxu>
User-Agent: slrn/0.9.7.2 (Linux 2.4.7/i686)

Przykładowy program jest taki:

int main()
{ float A=0;
  A=(A==0);
}

Wystarczy próbować go skompilować z opcjami "-march=i686 -mno-ieee-fp"
(można dodawać inne opcje, ale te dwie wystarczają), żeby efekt był
hm... daleki od zamierzonego.

Występuje to na pewno przy gcc 2.95.3-release oraz snapshocie 2.95.4
wziętym z CVS 23 sierpnia (dostępnym na ftp.pld.org.pl w /test).
Nie występuje w gcc 3.0.1.

Interesuje mnie, które wersje gcc mają ten problem - w szczególności
poprzednie wersje 2.95.x, debianowe snapshoty 2.95.4 (chyba były już
nowsze niż 20010823), redhatowe 2.96 (najlepiej wczesne).

A może ktoś z was już grzebał w gcc i wie coś o języku opisów maszyn
(*.md - wygląda na jakiś język funkcyjny albo "funkcyjnopodobny"
- z tego generowany jest kod w C, który tylko miejscami przypomina
źródło), używanych makrach itp.
Błąd występuje, jeżeli makro TARGET_CMOVE zwraca wartość niezerową,
a TARGET_IEEE_FP zerową. Prawdopodobnie błąd jest
w gcc/config/i386/i386.c lub w opisie maszyny gcc/config/i386/i386.md.

Niestety zgłaszanie błędów w gcc 2.95.[34], jeżeli nie występują
w 3.0.1, bez gotowego patcha raczej nie daje efektów (ten błąd już był
zgłaszany parę miesięcy temu, być może z dłuższym przykładem).
---


Mogę udostępnić trochę więcej informacji, które funkcje z insn-emit.c
(generowanego z i386.md) są wywoływane przed SEGV - ale to akurat łatwo
stwierdzić, natomiast to, że nie znam bebechów gcc, powoduje, że te
źródła są dla mnie całkowicie nieczytelne...


-- 
Jakub Bogusz
http://prioris.mini.pw.edu.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-devel-pl