-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 03/17/11 12:25, David Daney wrote:
> On 03/17/2011 11:20 AM, McCall, Ronald SIK wrote:
>>> If you let us in on what exactly the secret differences were, it would
>>> be easier to opine on this topic.
>>
>> Sure thing!  Here is an instruction sequence from the original Solaris
>> toolchain:
>>
> 
> Resending to gcc@.  I didn't really want a private message about it.
> 
>> fe000230:   54 6a 87 be     rlwinm  r10,r3,16,30,31
>> fe000234:   65 49 ff ff     oris    r9,r10,65535
>> fe000238:   61 28 ff fc     ori r8,r9,65532
>> fe00023c:   6d 07 80 00     xoris   r7,r8,32768
>> fe000240:   3c 00 43 30     lis r0,17200
>> fe000244:   90 e1 00 0c     stw r7,12(r1)
>> fe000248:   90 01 00 08     stw r0,8(r1)
>> fe00024c:   3c 80 fe 14     lis r4,-492
>> fe000250:   c8 01 00 08     lfd f0,8(r1)
>> fe000254:   39 24 82 38     addi    r9,r4,-32200<<<  Instruction
>> sequence #1
>> fe000258:   c8 89 00 00     lfd f4,0(r9)<<<  (continued)
>> fe00025c:   74 60 00 08     andis.  r0,r3,8
>> fe000260:   3c c0 00 01     lis r6,1
>> fe000264:   fc 60 20 28     fsub    f3,f0,f4<<<  Instruction sequence #2
>> fe000268:   fc 40 18 18     frsp    f2,f3
>> fe00026c:   fc 20 10 90     fmr f1,f2
>> fe000270:   fc 00 08 1e     fctiwz  f0,f1
>> fe000274:   d8 01 00 10     stfd    f0,16(r1)
>> fe000278:   80 81 00 14     lwz r4,20(r1)
>> fe00027c:   98 86 8f 0d     stb r4,-28915(r6)
>> fe000280:   41 82 00 cc     beq-    fe00034c
>>
>> Here is the same instruction sequence from the newly built Linux
>> toolchain:
>>
>> fe000230:   54 6a 87 be     rlwinm  r10,r3,16,30,31
>> fe000234:   65 49 ff ff     oris    r9,r10,65535
>> fe000238:   61 28 ff fc     ori r8,r9,65532
>> fe00023c:   6d 07 80 00     xoris   r7,r8,32768
>> fe000240:   3c 00 43 30     lis r0,17200
>> fe000244:   90 e1 00 0c     stw r7,12(r1)
>> fe000248:   90 01 00 08     stw r0,8(r1)
>> fe00024c:   3c 80 fe 14     lis r4,-492
>> fe000250:   c8 01 00 08     lfd f0,8(r1)
>> fe000254:   c9 a4 87 b0     lfd f13,-30800(r4)<<<  Instruction
>> sequence #1
>> fe000258:   fc 60 68 28     fsub    f3,f0,f13<<<  Instruction sequence #2
>> fe00025c:   74 60 00 08     andis.  r0,r3,8
>> fe000260:   3c 80 00 01     lis r4,1
>> fe000264:   fc 40 18 18     frsp    f2,f3
>> fe000268:   fc 20 10 90     fmr f1,f2
>> fe00026c:   fc 00 08 1e     fctiwz  f0,f1
>> fe000270:   d8 01 00 10     stfd    f0,16(r1)
>> fe000274:   80 e1 00 14     lwz r7,20(r1)
>> fe000278:   98 e4 8f 0d     stb r7,-28915(r4)
>> fe00027c:   41 82 00 c8     beq-    fe000344
>>
>> Instruction sequence #1 has been combined into a single equivalent
>> instruction.  Instruction sequence #2 moved.  Register usage is also
>> different but equivalent.
In my experience, there's all kinds of reasons why this can happen.

Use of floating point within the compiler (we generally avoid it),
unstable qsort (again, we generally try to avoid it), hashing issues,
particularly with pointers, etc etc.

For those reasons and many more, we don't try to guarantee that a
compiler running on different hosts will generate 100% identical target
code.

jeff

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJNglL7AAoJEBRtltQi2kC7kgsH/R1jVnxVlHimB09T56wJmU82
T3XtZRusl7j1vLNhzLDvxS+QpHz8bwL0mJFzDhJOtpPEm3gwTPQ9DSh32RGDbZ92
7ZgtsmHYTuSfZD2isUxLKBTi0PPs/Lv8bcmcwhhi11/QjppaLrQCycbzoALei4tF
BB1feKLwoYQFWK6PuOcdB1TCJZd0frAjcu93qHDbq04CJj3/EGPqBzi/TcEkAL0S
WQkWdmWtxKLtrT0dR+PiqO5PKdJ21Zl7qyIeOdFYepwYxQ7FjpAVMe1p4Wr7uc0J
DVoApYBWmD+Nkv/pP4kDqKxWnp48Jtd95qKh9frgPpoaY+fCIKtSENFxKqTZt9c=
=vHxO
-----END PGP SIGNATURE-----

Reply via email to