[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