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: [PATCH][i386] Fix PR 6585 redundant movl instructions



   It records a conflict between register 61 and 66 and ends up allocating
register 61 to (%esi:%ebx) where we would prefer (%edx:%eax). This patch
fixes it by splitting the DImode destination into two SImode parts before
register allocation, which allows the second subreg lowering pass to replace
the subregs with plain SImode regs which the register allocator can handle.

Nice.


A few hours ago I've attached to PR17236 a patch which obtains the same result in a target-independent way. I'm currently bootstrapping and SPEC-testing the patch; I'll let target and middle-end maintainers judge which approach to prefer. Yours has the obvious advantage of being localized to the i386 backend (mine touches three passes, local-alloc, regclass and combine...).

Paolo


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