diff options
Diffstat (limited to 'gcc/lra-constraints.cc')
| -rw-r--r-- | gcc/lra-constraints.cc | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/gcc/lra-constraints.cc b/gcc/lra-constraints.cc index b152997..48ce7578 100644 --- a/gcc/lra-constraints.cc +++ b/gcc/lra-constraints.cc @@ -2552,7 +2552,10 @@ process_alt_operands (int only_alternative)  		    {  		      int regno = decode_hard_reg_constraint (p);  		      gcc_assert (regno >= 0); -		      cl = REGNO_REG_CLASS (regno); +		      cl = NO_REGS; +		      int nregs = hard_regno_nregs (regno, mode); +		      for (int i = 0; i < nregs; ++i) +			cl = reg_class_superunion[cl][REGNO_REG_CLASS (regno + i)];  		      CLEAR_HARD_REG_SET (hard_reg_constraint);  		      SET_HARD_REG_BIT (hard_reg_constraint, regno);  		      cl_filter = &hard_reg_constraint; | 
