https://issues.apache.org/bugzilla/show_bug.cgi?id=52900

--- Comment #3 from Rainer Jung <[email protected]> ---
I tried to reproduce on Solaris 10 Sparc, using the following compilers:

gcc-4.1.2
gcc-4.5.4
gcc-4.6.3
gcc-4.7.1
gcc-4.7.2

and CFLAGS "-mcpu=v9 -m64 -O2" source code was httpd 2.4.4.

Unfortunately in my tests compilation succeeds for gcc-4.1.2, gcc-4.5.4 and
gcc-4.6.3. For the two 4.7 versions I get a failure in as:

/usr/ccs/bin/as -V -Qy -s -xarch=v9 -o core.o /var/tmp//cclu5H3f.s
/usr/ccs/bin/as: SunOS 5.10 118683-08 Patch 07/05/2012
/usr/ccs/bin/as: "/var/tmp//cclu5H3f.s", line 10402: error: invalid
(misaligned) register

The assembler line number varies depending on the exact compilation flags.

When using CFLAGS only "-m64" there's no problem.

32 Bit compilations always succeed.

Here's an excerpt from the assembler code, error is in line 10402:

10378 .LL1698:
10379         add     %fp, 2041, %o0
10380         call    ap_random_insecure_bytes, 0
10381          mov    2, %o1
10382         sub     %i1, %i0, %i1
10383         lduh    [%fp+2041], %g1
10384         srl     %i1, 0, %i1
10385         st      %g1, [%fp+2011]
10386         stx     %i1, [%fp+2023]
10387         mov     1023, %g1
10388         ldd     [%fp+2023], %f10
10389         sllx    %g1, 52, %g1
10390         fxtod   %f10, %f12
10391         stx     %g1, [%fp+1999]
10392         mov     1007, %g1
10393         ldd     [%fp+1999], %f10
10394         sllx    %g1, 52, %g1
10395         faddd   %f12, %f10, %f10
10396         ld      [%fp+2011], %f8
10397         stx     %g1, [%fp+1999]
10398         fitod   %f8, %f8
10399         ldd     [%fp+1999], %f12
10400         fmuld   %f8, %f12, %f8
10401         fmuld   %f10, %f8, %f8
10402         fdtox   %f8, %f9                    <===========
10403         st      %f10, [%fp+2011]
10404         lduw    [%fp+2011], %g1
10405         add     %g1, %i0, %i0
10406         sll     %i0, 16, %i0
10407         srl     %i0, 16, %i0
10408         return  %i7+8
10409          srl    %o0, 0, %o0
10410         .size   ap_random_pick, .-ap_random_pick
10411         .global core_module
10412         .section        ".data"
10413         .align 8
10414         .type   core_module, #object
10415         .size   core_module, 104
10416 core_module:

This looks like an old bug that was fixed in gcc 3.x times. Although my Solaris
assembler gives another error text, the problematic assembler line is the same
as reported by the OP.

Strange that it compiles for me with 4.6 but not with 4.6. Unfortunately we
don't know the exact flags used by the OP.

Regards,

Rainer

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to