[Patch,AVR,trunk,4.7] PR52461: Fix RAMPZ clobbering and RAMP* in epilogue

Georg-Johann Lay avr@gjlay.de
Mon Mar 5 16:01:00 GMT 2012


Richard Guenther wrote:
> On Mon, Mar 5, 2012 at 4:25 PM, Georg-Johann Lay <avr@gjlay.de> wrote:
>> Richard Guenther wrote:
>>
>>> All commits to the 4.7 branch need explicit release manager approval.  AVR
>>> isn't primary/secondary so please do not change anything before is
>>> released 4.7.0 for it.
>>>
>>> Thanks,
>>> Richard.
>> What is the exact procedure in that case?
>> Wait until approve from release manager in that case?
>> Who is the release manager, and should I CC for such changes?
>> Or just hope the patch is not overseen.
> 
> The exact procedure is to do bugfixing during stage3/4, for release blockers
> that pop up after a release candidate is created (like now), CC a release
> manager (Jakub, me, Joseph) for patches that you like to get in even
> though the branch is frozen.  Usually only bugs that prevent basic functionality
> (like building a target) can be fixed at this point, for everything
> else you have
> to wait until after 4.7.0 is released and the branch opens again for regression
> fixes.
> 
> Richard.

I was not aware that the 4.7.0 branch is completely frozen for the next 3
weeks; I thought the usual rules for backporting patches do apply...

The patch changes only in libgcc/config/avr and gcc/config/avr

The patch does not fix a blocker in the sense that without it avr cannot be
built, but the changes are essential.

Johann

libgcc/
	PR target/52461
	* config/avr/lib1funcs.S (__do_copy_data): Clear RAMPZ after usage
	if RAMPZ affects reading from RAM.
	(__tablejump_elpm__): Ditto.
	(.xload): Ditto.
	(__movmemx_hi): Ditto.
	(__do_global_ctors): Right condition for RAMPZ usage is "have ELPM".
	(__do_global_dtors): Ditto.
	(__xload_1, __xload_2, __xload_3, __xload_4): Ditto.  And make weak.
	(__movmemx_hi): Ditto.  And fix RAM-loop label.
	(__xload_1): Never read unintentionally from RAM.

gcc/
	PR target/52461
	* gcc/config/avr/avr.c (expand_prologue): Depend save/restore of
	RAMPZ on HAVE_RAMPD, not HAVE_RAMPZ.
	(expand_epilogue): Ditto.  And fix order of restoration to:
	RAMPZ, RAMPY, RAMPX, RAMPD.
	(avr_xload_libgcc_p): Always load __memx by lilbgcc call on
	big-RAM devices.
	(avr_out_lpm): Clear RAMPZ after usage if RAMPZ affects reading
	from RAM.
	(avr_out_xload): Never read unintentionally from RAM.
	* config/avr/avr.md (xload_8): Adjust insn length.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rampz.diff
Type: text/x-patch
Size: 11028 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20120305/6620d562/attachment.bin>


More information about the Gcc-patches mailing list