From: Jeffrey A Law Date: Tue, 19 Oct 1999 08:12:30 +0000 (+0000) Subject: reg-stack.c (stack_result): Aggregates are not returned in stack registers. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f099b1c909de8afb50264af41960c7b18b7320f1;p=platform%2Fupstream%2Fgcc.git reg-stack.c (stack_result): Aggregates are not returned in stack registers. * reg-stack.c (stack_result): Aggregates are not returned in stack registers. From-SVN: r30081 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 24096b1..f32d9cf 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Oct 19 02:03:00 1999 Jeffrey A Law (law@cygnus.com) + + * reg-stack.c (stack_result): Aggregates are not returned in + stack registers. + Tue Oct 19 01:26:48 1999 Alasdair Baird * fold-const.c (fold): Fix thinko in x+(-0) -> x transformation. diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c index 0cbc5da..d1bceef 100644 --- a/gcc/reg-stack.c +++ b/gcc/reg-stack.c @@ -1192,8 +1192,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))