[builder-ac-amd64@pld-linux.org: ERRORS: scorched3d.spec]

Paweł Sikora pluto w ds14.agh.edu.pl
Wto, 13 Kwi 2004, 20:50:18 CEST


On Tuesday 13 of April 2004 20:05, Jakub Bogusz wrote:
> On Tue, Apr 13, 2004 at 06:35:16PM +0200, Adam Gołębiowski wrote:
> > ----- Forwarded message from PLD ac-amd64 builder
> > <builder-ac-amd64 w pld-linux.org> -----
> >
> > From: PLD ac-amd64 builder <builder-ac-amd64 w pld-linux.org>
> > To: adamg w pld-linux.org
> > Cc: pld-logs-builder w pld-linux.org
> > Subject: ERRORS: scorched3d.spec
> > Date: Tue, 13 Apr 2004 08:49:57 +0000
> >
> > ICE - są chętni do naprawy?
> >
> > ../ode/lcp.cpp:186: warning: cast from pointer to integer of different
> > size
>
>                      
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> > ../ode/lcp.cpp:186: warning: cast to pointer from integer of different
> > size
>
>                      
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> > ../ode/lcp.cpp:218: error: unrecognizable insn:
> > (insn 541 217 220 19 0x2a95ab3c00 (set (reg:SI 0 eax [116])
> >         (subreg:SI (plus:DI (subreg:DI (reg:SI 7 esp) 0)
> >                 (const_int -1 [0xffffffffffffffff])) 0)) -1 (nil)
> >     (nil))
> > ../ode/lcp.cpp:218: internal compiler error: in extract_insn, at
> > recog.c:2175
>
> Ano ICE, tyle że kod jest błędny (tzn. poprawny składniowo, ale mógłby
> zrobić tylko SEGV po skompilowaniu... i zrobi to na alphie).
>
> typedef double dReal;
>
>     dReal *tmprow = (dReal*) ((char*)((((((int)(__builtin_alloca ((n *
> sizeof(dReal))+(16 -1)))))-1)|(16 -1))+1)); ^^^
>
> Co się stanie z 64-bitowym wskaźnikiem po zrzutowaniu na 32-bitowego
> inta i rozszerzeniu z powrotem do 64-bitowego wskaźnika, łatwo
> przewidzieć.

glowy nie dam, ale w standardzie C stoi bodajze, ze:

*int ma rozmiar naturalnego slowa maszynowego*
i zachowany jest porzadek sizeof(short) <= sizeof(int) <= sizeof(long).

czyli...

w przypadku arch. 32 bitowej jest to np.:
short(16) <= int(32) <= long(32).

w przypadku arch. 64 bitowej powinno byc IMO:
short(...) <= int(64) <= long(64...)

jesli na x86_64 int ma 32 bity, to jest conajmniej dziwne.

-- 
If you think of MS-DOS as mono, and Windows as stereo,
  then Linux is Dolby Digital and all the music is free...



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