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

Vitus Jensen vjensen at gmx.de
Wed May 19 11:41:30 UTC 2010


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.

Vitus

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




More information about the Openembedded-devel mailing list