This is the mail archive of the gcc-bugs@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]

[Bug rtl-optimization/63718] [5 Regression] ARM Thumb1 bootstrap fail after fuse-caller-save info in cprop-hardreg


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63718

vries at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vries at gcc dot gnu.org

--- Comment #5 from vries at gcc dot gnu.org ---
Created attachment 33874
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33874&action=edit
tentative patch, adds missing clobbers

Joey,

thanks for doing the analysis and the clear bug report. I cannot formally
confirm at this point since I don't have an arm bootstrap setup, but I agree,
those missing clobbers (while not causing problems otherwise) will cause
problems with fuse-caller-save.

I'd say the fix is to add the missing clobbers. Attached tentative patch
implements that fix.

Using the patch, I build a c-only arm compiler, compiled an example with
-mthumb and -march=armv4t and observed the new clobbers on the return in the
final dump:
...
(jump_insn 19 18 20 (parallel [
            (unspec_volatile [
                    (return)
            ] VUNSPEC_EPILOGUE)
            (clobber (reg:SI 0 r0))
            (clobber (reg:SI 1 r1))
            (clobber (reg:SI 2 r2))
            (clobber (reg:SI 3 r3))
        ]) test.c:9 773 {*epilogue_insns}
     (expr_list:REG_UNUSED (reg:SI 3 r3)
        (expr_list:REG_UNUSED (reg:SI 2 r2)
            (expr_list:REG_UNUSED (reg:SI 1 r1)
                (nil))))
 -> return)
...

Could you try out the patch and see if it fixes things for you?

Thanks,
- Tom


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