diff options
author | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-08-15 20:12:01 +0000 |
---|---|---|
committer | jsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-08-15 20:12:01 +0000 |
commit | 5730e779499adf859bf5496498e1098ba11c5529 (patch) | |
tree | 06eb58422ad100e5fca2738270d245d899c0541b /gcc/config/arm | |
parent | 844461a04b34befc788423c32e719b07f5aa37c4 (diff) | |
download | gcc-5730e779499adf859bf5496498e1098ba11c5529.tar.gz |
* config/arm/arm.c (add_minipool_backward_ref): Check for
8-byte-aligned entries in second case of forcing insertion after a
particular entry. Change third case to avoid inserting
non-8-byte-aligned entries before 8-byte-aligned ones.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@139135 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm')
-rw-r--r-- | gcc/config/arm/arm.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index a3a49f7242b..61b19696bab 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -8772,17 +8772,20 @@ add_minipool_backward_ref (Mfix *fix) its maximum address (which can happen if we have re-located a forwards fix); force the new fix to come after it. */ - min_mp = mp; - min_address = mp->min_address + fix->fix_size; + if (ARM_DOUBLEWORD_ALIGN + && fix->fix_size >= 8 && mp->fix_size < 8) + return NULL; + else + { + min_mp = mp; + min_address = mp->min_address + fix->fix_size; + } } - /* If we are inserting an 8-bytes aligned quantity and - we have not already found an insertion point, then - make sure that all such 8-byte aligned quantities are - placed at the start of the pool. */ + /* Do not insert a non-8-byte aligned quantity before 8-byte + aligned quantities. */ else if (ARM_DOUBLEWORD_ALIGN - && min_mp == NULL - && fix->fix_size >= 8 - && mp->fix_size < 8) + && fix->fix_size < 8 + && mp->fix_size >= 8) { min_mp = mp; min_address = mp->min_address + fix->fix_size; |