This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Results for 3.4-bi 20021213 (experimental) testsuite on


> > There are still 14 additional v3 fails.  I looked at one briefly by
> > comparing the assembler output with the 3.3 compiler versus the 3.4
> > compiler.  It looks like we are failing to pass the struct value register
> > in some situations (there was one call where 3.3 passed it and 3.4 didn't
> > in the operations.cc test).

In the v3 testsuite, this appears to be the only significant diff
in the operations.cc test:

--- operations-3.3.s    2002-12-16 16:18:47.000000000 -0800
+++ operations.s        2002-12-16 15:52:40.000000000 -0800
[...]
@@ -112,8 +112,6 @@
	nop
 .LEHE2:
	ldo 40(%r3),%r19
-       ldo 32(%r3),%r20
-       copy %r20,%r28
	copy %r19,%r26
	ldil LR'.LC0,%r19
	ldo RR'.LC0(%r19),%r25

This diff occurs in _Z6test01v setting up a call to
_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_.

With 3.3 we have in the initial rtl:

(insn 51 50 52 (nil) (set (reg:SI 103)
        (plus:SI (reg/f:SI 90 virtual-stack-vars)
	    (const_int 24 [0x18]))) -1 (nil)
    (nil))

(insn 52 51 53 (nil) (set (reg:SI 28 %r28)
        (reg:SI 103)) -1 (nil)
    (nil))

With 3.4,

(insn 52 51 53 (nil) (set (reg/f:SI 28 %r28)
        (reg/f:SI 28 %r28)) -1 (nil)
    (nil))

It looks like the code is attempting to reuse the address previously
loaded into %r28.  However, there are two intervening function calls
and the value is clobbered.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]