Hi Przemek,
After some experimenting it looks like -gc3 is the culprit.
This can be easily seen even by using harbour.exe from the
official MinGW binary package.
You short sample program, compiled with -gc3 will produce
this line:
---
hb_xvmPushLongLong( HB_LL( 705032704 ) );
---
Brgds,
Viktor
On 2008.09.25., at 19:22, Przemyslaw Czerpak wrote:
On Thu, 25 Sep 2008, Szakáts Viktor wrote:
Hi Viktor,
tests: 914, 917-920, 923-925, 959, 962-965, 968-970, 987-990.
Actually the new MinGW results are the right ones, but the
expected results seem to be screwed up, showing 705032704 instead
of
5000000000. Quite strange. ]
Can you send the exact hbtest output?
! 914 MAIN_MATH(0) Round(5000000000, 0)
Result: 5000000000
Expected: 705032704
This is very serious problem.
Just try:
proc main()
? 5000000000
return
It means that during compilation 5000000000 in source code
is stripped to 32bits. Please carefully check your build settings.
I cannot replicate it in any of my C compilers and I rether do
not expect that it will be wrong. It's my very old code perfectly
working for years in Harbour and xHarbour. For me it looks like sth
seriously wrong with LONGLONG numbers in C compiler or side effects
of some experiments with macros or definitions we are using, f.e.
HB_LONG type mapped to LONG without updating corresponding macros or
HB_LONG_LONG_OFF used to compile only part of Harbour code, f.e.
only compiler or only HVM/RTL. Or some C different compiler switches
use to compile only part of Harbour code which may interact with size
or alignment of data structures or ABI.
Please once again carefully check you environment and try to replicate
these results with _FULL_ clean build.
best regards,
Przemek
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour