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]

Re: New bootstrap failure on ARM


> 
> cleanup_subreg_operands ends up calling alter_subreg twice, the first time 
> when walking the MULT (which matches the "shift_operator" operand) and the 
> second time when processing operand[4] directly: on the second call 
> operand[4] is no-longer a subreg and the compiler segfaults.  This occurs 
> because although recog_data.operand_loc[4] has been fixed, 
> recog_data.operand[4] still contains a subreg (but we then call 
> alter_subreg with something that isn't a subreg).
> 
> It's not immediately obvious to me what the best fix is.  Three possible 
> approaches spring to mind (in rough order of my preference):
Uhm, I see...
> 
> 1) Test *recog_data.operand_loc[i] for being a subreg rather than 
> recog_data.operand[i]
I guess this is the best hack for it.  I can bring the patch tomorrow.

Honza
> 2) Make alter_subreg do nothing if it isn't passed a subreg.
> 3) Make cleanup_subreg_operands ignore match_operator operands.
> 
> Do you have an opinion?
> 
> R.
> 


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