diff options
author | Richard Sandiford <rsandifo@redhat.com> | 2004-01-12 19:46:34 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@redhat.com> | 2004-01-12 19:46:34 +0000 |
commit | 400c22e160b126d64e017701d7d39d9cbe59e9ff (patch) | |
tree | 3bfd02131df9e94c144f7fd1022e279494e00617 | |
parent | 27878d8adb3c68e39efcdcea955958c1ceae9c77 (diff) |
* config/mips/mips.c (mips_symbolic_constant_p): Revert last patch.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@75749 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 18 |
2 files changed, 9 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 29eb50376e7..825818d401b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-01-12 Richard Sandiford <rsandifo@redhat.com> + + * config/mips/mips.c (mips_symbolic_constant_p): Revert last patch. + 2004-01-12 Kazu Hirata <kazu@cs.umass.edu> PR optimization/12508. diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 1e04fa7a954..66bc05344fb 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -902,16 +902,6 @@ mips_symbolic_constant_p (rtx x, enum mips_symbol_type *symbol_type) if (offset == 0) return true; - /* If X refers to a string constant, and that constant is put into a - mergeable section, the linker will need to know which string is - being accessed. It has no way of distinguishing an out-of-bounds - access to X from an in-bounds access to a later or earlier string. */ - if (GET_CODE (x) == SYMBOL_REF - && SYMBOL_REF_DECL (x) != 0 - && TREE_CODE (SYMBOL_REF_DECL (x)) == STRING_CST - && !(offset > 0 && offset < TREE_STRING_LENGTH (SYMBOL_REF_DECL (x)))) - return false; - /* Check whether a nonzero offset is valid for the underlying relocations. */ switch (*symbol_type) @@ -927,9 +917,11 @@ mips_symbolic_constant_p (rtx x, enum mips_symbol_type *symbol_type) return (offset > 0 && offset < mips_section_threshold); case SYMBOL_CONSTANT_POOL: - /* We don't generate out-of-bounds accesses to normal constant - pool entries. String constants were handled above. */ - return true; + /* Similarly check the range of offsets for mips16 constant + pool entries. */ + return (CONSTANT_POOL_ADDRESS_P (x) + && offset > 0 + && offset < (int) GET_MODE_SIZE (get_pool_mode (x))); case SYMBOL_GOT_LOCAL: case SYMBOL_GOTOFF_PAGE: |