New bootstrap failure on ARM

Jan Hubicka jh@suse.cz
Fri Dec 7 07:51:00 GMT 2001


> 
> 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.
> 



More information about the Gcc-bugs mailing list