OSDN Git Service

Backport from mainline
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Oct 2012 15:27:47 +0000 (15:27 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Oct 2012 15:27:47 +0000 (15:27 +0000)
commitba062ae652f5b46563e3f397e04acd8cce057efe
treed9aa885e1f13ff4723135ba27556d96b8c7b3003
parent677b12e53d3deba23db031c9106b872a162e466a
Backport from mainline
2012-10-22  Uros Bizjak  <ubizjak@gmail.com>

* config/i386/i386.c (memory_address_length): Assert that non-null
base or index RTXes are registers.  Do not check for REG RTXes.
Determine addr32 prefix using SImode_address_operand or
from original base and index RTXes.  Simplify code.

2012-10-21  Uros Bizjak  <ubizjak@gmail.com>

* config/i386/i386-protos.h (memory_address_length): Add new bool
argument.  Update all uses.
* config/i386/i386.c (memory_address_length): If not LEA insn, then
add length of addr32 prefix based on mode of base or index register.
(ix86_attr_length_address_default) <TYPE_LEA>: Do not handle SImode
addresses here.  Update call to memory_address_length.
(ix86_print_address_operand): Use SImode_address_operand predicate.
* config/i386/predicates.md (SImode_address_operand): New.
* config/i386/i386.md (lea<mode>): Use SImode_address_operand
to calculate "mode" attribute.  Use SImode_address_operand predicate
instead of open-coding accepted RTX codes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@192769 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/i386/i386-protos.h
gcc/config/i386/i386.c
gcc/config/i386/i386.md
gcc/config/i386/predicates.md