summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/reg-stack.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>1999-11-01 08:28:22 +0000
committerobrien <obrien@FreeBSD.org>1999-11-01 08:28:22 +0000
commit4b66dfb9030fa6d9912fcf3dfbe3fa8a4fa0a3fc (patch)
tree0e33a2f257e9df8e4af5c0ecf0304ce5239fa3bf /contrib/gcc/reg-stack.c
parent1d061a7b0a9151a14d61c129611f720697c28e76 (diff)
downloadFreeBSD-src-4b66dfb9030fa6d9912fcf3dfbe3fa8a4fa0a3fc.zip
FreeBSD-src-4b66dfb9030fa6d9912fcf3dfbe3fa8a4fa0a3fc.tar.gz
Virgin import of the GCC 2.95.2 compilers
Diffstat (limited to 'contrib/gcc/reg-stack.c')
-rw-r--r--contrib/gcc/reg-stack.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/contrib/gcc/reg-stack.c b/contrib/gcc/reg-stack.c
index dd4a87e..42caefa 100644
--- a/contrib/gcc/reg-stack.c
+++ b/contrib/gcc/reg-stack.c
@@ -1186,8 +1186,16 @@ static rtx
stack_result (decl)
tree decl;
{
- rtx result = DECL_RTL (DECL_RESULT (decl));
+ rtx result;
+ /* If the value is supposed to be returned in memory, then clearly
+ it is not returned in a stack register. */
+ if (aggregate_value_p (DECL_RESULT (decl)))
+ return 0;
+
+ result = DECL_RTL (DECL_RESULT (decl));
+ /* ?!? What is this code supposed to do? Can this code actually
+ trigger if we kick out aggregates above? */
if (result != 0
&& ! (GET_CODE (result) == REG
&& REGNO (result) < FIRST_PSEUDO_REGISTER))
OpenPOWER on IntegriCloud