------- Additional Comments From bjoern dot m dot haase at web dot de  
2005-07-29 20:06 -------
Hi, 
 
a couple of weeks after identifying this issue, I have continued working with 
4.0.0. I never observed a similar failure in our production code. The issue 
seems to be strongly linked to the constraint requiring simultaneously two 
operands with the "+&" modifier. The back-end, itself never generates such a 
constraint pattern right now. 
 
It seems to me that the real problem has to do with register constraint 
matching. I personally do not have sufficient knowledge so that I would 
consider to start thinking about daring to eventually touch reload.c and 
comrades. On the other hand, I still feel uneasy about this bug.  
 
For this reason I am thinking about a workaround solely within the back-end. 
While refraining from requiring that code that contains the mentioned difficult 
constraits compiles, I presently think that one might already be better of with 
a situation where it triggers an ICE instead of generating wrong code. 
 
IMO, a possible workaround might be to simply disable within the machine 
description the move patterns that meet the two following two conditions  
1.) the move uses a memory reference stored in Y 
2.) the move target is the Y register itself 
 
My hope is that in absence of this move pattern, reload will no longer attempt 
to use the frame pointer register Y as spill register. 
 
This workaround certainly would be far from ideal, but better than nothing. I'd 
appreciate comments on this issue. 
 
Yours, 
 
Björn 

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21990

Reply via email to