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

Gary Thomas gary at mlbassoc.com
Wed May 19 11:45:55 UTC 2010


On 05/19/2010 05:41 AM, 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.

Actually, Poky also supports PowerPC now :-)

That said, it may or may not be related.  I'll do some investigating.

Thanks for isolating this problem to such a simple example.

-- 
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------




More information about the Openembedded-devel mailing list