[oe] powerpc-g++ 4.2.4 problem casting long long to double

Vitus Jensen vjensen at gmx.de
Wed May 19 15:46:50 UTC 2010


On Wed, 19 May 2010, Vitus Jensen wrote:
> On Wed, 19 May 2010, Gary Thomas wrote:
>>  On 05/19/2010 03:38 AM, Vitus Jensen wrote:
>> > 
>> >   We noticed a strange problem with C++ code casting long long variables
>> >   to double, as a lot of qt-embedded code is doing.
>> > 
>> >   =================
>> >   double
>> >   convert(long long l)
>> >   {
>> >   return (double)l; // or double(l)
>> >   }
>> > 
>> >   int
>> >   main(int argc, char * argv[])
>> >   {
>> >   long long l = 10;
>> >   double f;
>> > 
>> >   f = convert(l);
>> >   printf("convert: %lld => %f\n", l, f);
>> >   return 0;
>> >   }
>> >   ====================
>> > 
>> >   output:
>> >   convert: 10 => 0.000000
>> > 
>> >   C++ compiled via powerpc-angstrom-linux-g++ gives the above result.
>> >   Compiling the same code as C using powerpc-angstrom-linux-gcc works
>> >   fine. But when looking at the assembler code both compiler produce
>> >   virtually identical output and both call __floatdidf to do the actual
>> >   conversion. Very strange, has anyone ever seen similar effects?
>>
>>  Is this from a recent tree (i.e. post Richard Purdie's restructuring)?
>>
>>  I've seen similar problems with C++ code on Poky which uses the same
>>  changes.
>
> No, I'm building everything from the stable branch.  There were some commits 
> cherry-picked from .dev but those only add Qt 4.5.2.
>
> Poky is ARM only, right?  Perhaps it would be helpfull to build a compiler 
> from .dev and for a widely used powerpc-platform?  How does n1200 sound? It 
> uses the same ppc603e.

Unfortunately .dev switched to gcc-4.3.3 in the meantime which fails for 
ppc603e platforms because of undefined references to __nldbl_fprintf and 
__nldbl_sprintf during compile.

Platform tqm8540 (ppce500, just to try some other ppc cpu) fails in 
gcc-4.3.3 compile, too.  Possible related to this:

endian.h:34:4: warning: #warning Cannot determine current byte order, 
assuming big-endian.

So currently .dev should be unbuildable for ppc users?  Without selecting 
a non-default compiler that is.

Vitus

-- 
Vitus Jensen, Hannover, Germany, Universe (current)
pgp public key available from keyservers




More information about the Openembedded-devel mailing list