diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f4fcc8d06e37c9047eb29f38160f84de7b12a0de..980edbe530b17f0e0a59c7af4b78cfb1cbb73035 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-04-29  Hans-Peter Nilsson  <hp@bitrange.com>
+
+	* varasm.c (output_constant_def): Correct test for not calling
+	ENCODE_SECTION_INFO for INTEGER_CST.
+
 2002-04-29  Neil Booth  <neil@daikokuya.demon.co.uk>
 
 	* cppexp.c (lex): Move some code to _cpp_parse_expr, but
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 4dbd09c6d9ea56abbf8463f90ea2e31f34cf2949..8b22e16fe095743f0189a5fad1ff2b043b18107b 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -3284,7 +3284,9 @@ output_constant_def (exp, defer)
      encoded in it.  */
   if (! found)
     {
-      if (TREE_CODE (exp) == INTEGER_CST)
+      /* Take care not to invoke ENCODE_SECTION_INFO for constants
+	 which don't have a TREE_CST_RTL.  */
+      if (TREE_CODE (exp) != INTEGER_CST)
 	ENCODE_SECTION_INFO (exp, true);
 
       desc->rtl = rtl;