On Thu, 29 Jul 2010, Denys Vlasenko wrote:

> Try attached patch.
>
> # ./busybox dc 18014398509481982 4503599627370496 mod p
> 4503599627370494
> # ./busybox dc 18014398509481982 9007199254740992 mod p
> 9007199254740990
>
>
> function                                             old     new   delta
> print_base                                           176     238     +62
> or                                                    91     103     +12
> eor                                                   91     103     +12
> and                                                   91     103     +12
> not                                                   60      64      +4
> mod                                                  103     105      +2
> ------------------------------------------------------------------------------
> (add/remove: 0/0 grow/shrink: 6/0 up/down: 104/0)             Total: 104 bytes

Thanks.  That seems to work much better.  Still.

My gcc:

$ gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.4.4-7'
--with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr
--enable-shared --enable-multiarch --enable-linker-build-id
--with-system-zlib --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4
--program-suffix=-4.4 --enable-nls --enable-clocale=gnu
--enable-libstdcxx-debug --enable-objc-gc --enable-targets=all
--with-arch-32=i586 --with-tune=generic --enable-checking=release
--build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.4.4 (Debian 4.4.4-7)

generates bigger code:

Final link with: crypt m
function                                             old     new   delta
print_base                                           219     498    +279
mod                                                  123     321    +198
or                                                   120     315    +195
eor                                                  120     315    +195
and                                                  120     315    +195
not                                                   79     198    +119
.rodata                                           105913  105957     +44
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 7/0 up/down: 1225/0)           Total: 1225 bytes
   text    data     bss     dec     hex filename
 849424    2106    9020  860550   d2186 busybox_old
 850649    2106    9020  861775   d264f busybox_unstripped

There's also the warnings (the gcc odd option -Wbad-function-cast picks
up):

editors/awk.c: In function 'handle_special':
editors/awk.c:1699: warning: cast from function call of type 'double' to
non-matching type 'int'
editors/awk.c: In function 'awk_printf':
editors/awk.c:1965: warning: cast from function call of type 'double' to
non-matching type 'char'
editors/awk.c: In function 'evaluate':
editors/awk.c:2627: warning: cast from function call of type 'int' to
non-matching type 'double'
editors/awk.c:2747: warning: cast from function call of type 'double' to
non-matching type 'int'

procps/mpstat.c: In function 'percent_value':
procps/mpstat.c:153: warning: cast from function call of type 'data_t' to
non-matching type 'double'
procps/mpstat.c: In function 'hz_value':
procps/mpstat.c:158: warning: cast from function call of type 'data_t' to
non-matching type 'double'

that might indicate the need to check the code for similar shortages as in
miscutils/dc.c.


Cheers,

-- 
Cristian
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to