From e978d62ee6039fd2daa8a0f1acdcef80d441cec6 Mon Sep 17 00:00:00 2001
From: Paul Brook <paul@codesourcery.com>
Date: Wed, 18 Feb 2004 12:33:18 +0000
Subject: [PATCH] rtlanal.c (rtx_varies_p): Return 0 for NULL_RTX

	* rtlanal.c (rtx_varies_p): Return 0 for NULL_RTX
testsuite/
	* gcc.c-torture/compile/libcall-1.c: New test.

From-SVN: r78027
---
 gcc/ChangeLog                                   |  4 ++++
 gcc/rtlanal.c                                   |  6 +++++-
 gcc/testsuite/ChangeLog                         |  4 ++++
 gcc/testsuite/gcc.c-torture/compile/libcall-1.c | 14 ++++++++++++++
 4 files changed, 27 insertions(+), 1 deletion(-)
 create mode 100644 gcc/testsuite/gcc.c-torture/compile/libcall-1.c

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4e4dcd760990..8b1e5663613d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2004-02-18  Paul Brook  <paul@codesourcery.com>
+
+	* rtlanal.c (rtx_varies_p): Return 0 for NULL_RTX
+
 2004-02-18  Paul Brook  <paul@codesourcery.com>
 
 	PR debug/12934
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index c408521e4888..f643dfe192a3 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -134,10 +134,14 @@ rtx_unstable_p (rtx x)
 int
 rtx_varies_p (rtx x, int for_alias)
 {
-  RTX_CODE code = GET_CODE (x);
+  RTX_CODE code;
   int i;
   const char *fmt;
 
+  if (!x)
+    return 0;
+
+  code = GET_CODE (x);
   switch (code)
     {
     case MEM:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c343a6401581..3bacb3bef04d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2004-02-18  Paul Brook  <paul@codesourcery.com>
+
+	* gcc.c-torture/compile/libcall-1.c: New test.
+
 2004-02-18  Paul Brook  <paul@codesourcery.com>
 
 	PR debug/12934
diff --git a/gcc/testsuite/gcc.c-torture/compile/libcall-1.c b/gcc/testsuite/gcc.c-torture/compile/libcall-1.c
new file mode 100644
index 000000000000..c1b1cfc61395
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/libcall-1.c
@@ -0,0 +1,14 @@
+/* Failed on ARM because rtx_varies_p didn't like the REG_EQUAL notes
+   generated for libcalls.
+   http://gcc.gnu.org/ml/gcc-patches/2004-02/msg01518.html */
+static const char digs[] = "0123456789ABCDEF";
+int __attribute__((pure)) bar();
+
+int foo (int i)
+{
+  int len;
+  if (i)
+    return 0;
+  len = bar();
+  return digs[len];
+}
-- 
GitLab