On 10/24/13 18:20, Igor Shevlyakov wrote:
I stumbled on a case like this:
If the multipliers allowed for addressing modes are dependent on actual
mode, in some cases compiler
refuses to recognize address as legitimate.
It boils down to this place in expr.c where address_mode is incorrectly
used instead of actual mode.
I rebootstraped and tested on x86_64-linux-gnu but there's no testcase to
see the improved behavior...
Please patch the trunk.
Thanks
Igor
=====
2013-10-24 Igor
Shevlyakov<igor.shevlyakov@**gmail.com<igor.shevlya...@gmail.com>
* expr.c (expand_expr_real_1): Use proper memory access mode instead of
address_mode
in the call to memory_address_addr_space.
Thanks. Installed on the trunk.
FWIW, the PA might show improvements from this patch. It's scaled
indexed addressing modes only allow multipliers that are the same as the
size of the object being accessed. ie, a load which accesses 2 bytes
allows *2, load accessing 4 bytes allows *4 and similarly for double-words.
Anyway, the PA is a dead processor, but if you're looking for ways to
show problems around limited scaled indexed addressing on a processor
that is in the trunk, you might want to look at the PA.
jeff