aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey Oldham <oldham@codesourcery.com>2000-12-28 19:35:56 +0000
committerJeffrey D. Oldham <oldham@gcc.gnu.org>2000-12-28 19:35:56 +0000
commit212addfac7f08b7cb1fbb223c2934f6addb77227 (patch)
tree21b4d104e3a6523b2bdf308b6a38174f6e35b602 /gcc
parent5da01bc1fbefacc99f7e4cd271583ee4e3c56bcb (diff)
downloadgcc-212addfac7f08b7cb1fbb223c2934f6addb77227.zip
gcc-212addfac7f08b7cb1fbb223c2934f6addb77227.tar.gz
gcc-212addfac7f08b7cb1fbb223c2934f6addb77227.tar.bz2
varasm.c (initializer_constant_valid_p): Indicate subtraction of pointers to the same string constant is absolute.
2000-12-28 Jeffrey Oldham <oldham@codesourcery.com> * varasm.c (initializer_constant_valid_p): Indicate subtraction of pointers to the same string constant is absolute. From-SVN: r38514
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/varasm.c8
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e826e1c..3230e13 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-12-28 Jeffrey Oldham <oldham@codesourcery.com>
+
+ * varasm.c (initializer_constant_valid_p): Indicate subtraction of
+ pointers to the same string constant is absolute.
+
2000-12-28 Joseph S. Myers <jsm28@cam.ac.uk>
* c-common.c (enum format_type): Add strfmon_format_type.
diff --git a/gcc/varasm.c b/gcc/varasm.c
index b2c283e..8f76f45 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -4252,6 +4252,14 @@ initializer_constant_valid_p (value, endtype)
Then the value is absolute. */
if (valid0 == valid1 && valid0 != 0)
return null_pointer_node;
+
+ /* Since GCC guarantees that string constants are unique in the
+ generated code, a subtraction between two copies of the same
+ constant string is absolute. */
+ if (valid0 && TREE_CODE (valid0) == STRING_CST &&
+ valid1 && TREE_CODE (valid1) == STRING_CST &&
+ TREE_STRING_POINTER (valid0) == TREE_STRING_POINTER (valid1))
+ return null_pointer_node;
}
/* Support differences between labels. */