diff options
author | obrien <obrien@FreeBSD.org> | 1999-11-01 08:28:22 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 1999-11-01 08:28:22 +0000 |
commit | 4b66dfb9030fa6d9912fcf3dfbe3fa8a4fa0a3fc (patch) | |
tree | 0e33a2f257e9df8e4af5c0ecf0304ce5239fa3bf /contrib/gcc/reg-stack.c | |
parent | 1d061a7b0a9151a14d61c129611f720697c28e76 (diff) | |
download | FreeBSD-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.c | 10 |
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)) |