aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-03-02 12:44:23 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-03-02 12:44:23 -0500
commit06b967f926b788a80f2880a3fd09e0969964808d (patch)
tree8e8d07a572969d5df9cfc4d42934c03f6a8cb8c5 /gcc
parentd80f96e9a80f8517f261e5ae518b367878ba1112 (diff)
downloadgcc-06b967f926b788a80f2880a3fd09e0969964808d.zip
gcc-06b967f926b788a80f2880a3fd09e0969964808d.tar.gz
gcc-06b967f926b788a80f2880a3fd09e0969964808d.tar.bz2
(SKIP_CALLERS_UNIMP_P): Make agree with test used in call.
From-SVN: r11402
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/sparc/sparc.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index f34a369..8bf67aa 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -39,9 +39,14 @@ Boston, MA 02111-1307, USA. */
/* 1 if the caller has placed an "unimp" insn immediately after the call.
This is used in v8 code when calling a function that returns a structure.
- v9 doesn't have this. */
-
-#define SKIP_CALLERS_UNIMP_P (!TARGET_ARCH64 && current_function_returns_struct)
+ v9 doesn't have this. Be careful to have this test be the same as that
+ used on the call. */
+
+#define SKIP_CALLERS_UNIMP_P \
+(!TARGET_ARCH64 && current_function_returns_struct \
+ && ! integer_zerop (DECL_SIZE (DECL_RESULT (current_function_decl))) \
+ && (TREE_CODE (DECL_SIZE (DECL_RESULT (current_function_decl))) \
+ == INTEGER_CST))
/* Global variables for machine-dependent things. */