On Mon, Feb 25, 2013 at 8:51 PM, Richard Biener <richard.guent...@gmail.com> wrote: > On Mon, Feb 25, 2013 at 11:13 AM, Bin.Cheng <amker.ch...@gmail.com> wrote: >> On Mon, Feb 25, 2013 at 5:39 PM, Richard Biener
>> >> Another question about multiplied address is in function >> multiplier_allowed_in_address_p, it constructs rtx like "(MULT reg1, >> ratio)" and let backend determine whether multiplied address is >> allowed. I suspect the code is implemented/tested on x86, since >> machine like ARM only supports multiplied address with non-null base >> register, like "base + reg * index". The code causes multiplied >> address disabled totally for ARM machine. >> Any comments? > > Well - enhance it. Best without the need to construct an RTX in the > first place ;) I will do this along with some other IVOPT improvement. As far as I can see, constructing RTX and let backend make the decision is a general method since *_address_p has already implemented in each backend. Considering it is a backend dependent problem, I don't have better method other rtx pattern right now (to do this, new code/hook may be introduced, and they are not neat either). Of course, the rtx way has it's disadvantage that each backend only accept its own address pattern. -- Best Regards.