summaryrefslogtreecommitdiff
path: root/gcc/config/arm
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2008-08-15 21:12:01 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2008-08-15 21:12:01 +0100
commit853ff9e23ea76554cfef2657733e6e8aa14ebbdb (patch)
tree06eb58422ad100e5fca2738270d245d899c0541b /gcc/config/arm
parenta214f4d615c7c7e6720db5d579eaf8e97aefb216 (diff)
downloadgcc-853ff9e23ea76554cfef2657733e6e8aa14ebbdb.tar.gz
arm.c (add_minipool_backward_ref): Check for 8-byte-aligned entries in second case of forcing insertion after a...
* 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. From-SVN: r139135
Diffstat (limited to 'gcc/config/arm')
-rw-r--r--gcc/config/arm/arm.c21
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;