> On 32-bit x86, register class CLOBBERED_REGS is a proper subset of > LEGACY_REGS, which causes IRA not to consider it separately for register > allocation, even when it has lower cost than other classes. This patch is > useful to fix code generation problem that appears with no-PLT PIC tailcalls. > > Was there a specific reason for CLOBBERED_REGS class to be listed as late as > it is? On 32-bit this class contains only EAX, ECX, EDX.
Uros moved CLOBBERED_REGS late in https://gcc.gnu.org/ml/gcc-patches/2012-08/msg00796.html which contains a rationale, too. I am adding Uros and Vladimir to CC just in case they missed the email :) Honza > > OK? > * config/i386/i386.h (enum reg_class): Move CLOBBERED_REGS before > Q_REGS. > (REG_CLASS_NAMES): Ditto. > (REG_CLASS_CONTENTS): Ditto. >