diff options
author | Joseph Myers <joseph@codesourcery.com> | 2008-08-15 21:12:01 +0100 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2008-08-15 21:12:01 +0100 |
commit | 853ff9e23ea76554cfef2657733e6e8aa14ebbdb (patch) | |
tree | 06eb58422ad100e5fca2738270d245d899c0541b /gcc | |
parent | a214f4d615c7c7e6720db5d579eaf8e97aefb216 (diff) | |
download | gcc-853ff9e23ea76554cfef2657733e6e8aa14ebbdb.zip gcc-853ff9e23ea76554cfef2657733e6e8aa14ebbdb.tar.gz gcc-853ff9e23ea76554cfef2657733e6e8aa14ebbdb.tar.bz2 |
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')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 21 |
2 files changed, 19 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d823e22..3fd1b41 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2008-08-15 Joseph Myers <joseph@codesourcery.com> + + * 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. + 2008-08-15 Richard Guenther <rguenther@suse.de> * tree-ssa-ccp.c (maybe_fold_offset_to_reference): Do not diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index a3a49f7..61b1969 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; |