From: Sam S. <sd...@gn...> - 2009-02-18 15:04:57
|
Hi Zheng, thanks for your investigation! zheng he - Sun Microsystems - Beijing China wrote: > > Finally, I made some progress on building this. > > GCC 3.4 mis-compiled following code section of function > square_2loop_down in intmal.d file. The compiler reassigned register > "%g1" to "tmp" variable. "%g1" should not be assigned to any variable > since it is assigned to "_hi". > > > len = 2*len; > do { > len -= 2; > uintD digit = *--sourceptr; > uintD hi; > uintD lo; > uintD tmp; > lo= mulu32_(digit,digit); > { > register uint32 _hi __asm__("%g1"); > hi= _hi; > } > tmp = destptr[-1] + lo; destptr[-1] = tmp; > if (tmp < lo) > hi++; > tmp = destptr[-2] + hi; destptr[-2] = tmp; > destptr -= 2; > if (tmp < hi) > inc_loop_down(destptr,len); > } while (len > 0); > > > Now, I can compile the clisp-2.47 on sparc/gcc3.4 with following command > after replace all "%g1" with "%g3" in all *.d files. Bruno, what should we do? should we replace "%g1" with "%g3" in all *.d files? should this be reported to gcc as a bug? (is gcc supposed to notice that we are using "%g1"?) > ./configure --with-libreadline-prefix=../readline-5.2 > --with-libsigsegv-prefix=../libsigsegv --with-debug --cbc build > > "--with-debug" is required, otherwise it will fail. this is weird. how does it fail? Sam. |