aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2014-11-20 06:13:04 -0800
committerRichard Henderson <rth@gcc.gnu.org>2014-11-20 06:13:04 -0800
commitad1048a5287c73ce13fac4183dfc01811943e791 (patch)
tree8c81407600a06cdf41b7c392c15db9b0c20c10c5
parentf8b756b74c2ef815ab2d6164ccc97dc32578cf8c (diff)
downloadgcc-ad1048a5287c73ce13fac4183dfc01811943e791.zip
gcc-ad1048a5287c73ce13fac4183dfc01811943e791.tar.gz
gcc-ad1048a5287c73ce13fac4183dfc01811943e791.tar.bz2
re PR target/63977 (r217769 caused many failures)
PR target/63977 * config/i386/i386.c (ix86_static_chain): Reinstate the check for DECL_STATIC_CHAIN. From-SVN: r217853
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c6
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9aaac25..1c6a04d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-11-20 Richard Henderson <rth@redhat.com>
+
+ PR target/63977
+ * config/i386/i386.c (ix86_static_chain): Reinstate the check
+ for DECL_STATIC_CHAIN.
+
2014-11-20 Tejas Belagod <tejas.belagod@arm.com>
* config/aarch64/aarch64-protos.h (aarch64_classify_symbol):
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index fffddfc..6c8dbd6 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -27360,6 +27360,12 @@ ix86_static_chain (const_tree fndecl_or_type, bool incoming_p)
{
unsigned regno;
+ /* While this function won't be called by the middle-end when a static
+ chain isn't needed, it's also used throughout the backend so it's
+ easiest to keep this check centralized. */
+ if (DECL_P (fndecl_or_type) && !DECL_STATIC_CHAIN (fndecl_or_type))
+ return NULL;
+
if (TARGET_64BIT)
{
/* We always use R10 in 64-bit mode. */