2003-10-10 Elena Zannoni <ezannoni@redhat.com>

* sh-tdep.c (sh_use_struct_convention): Clarify one case in
	comment.
This commit is contained in:
Elena Zannoni 2003-10-10 19:20:31 +00:00
parent 3f997a978d
commit 7fe958be01
2 changed files with 16 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2003-10-10 Elena Zannoni <ezannoni@redhat.com>
* sh-tdep.c (sh_use_struct_convention): Clarify one case in
comment.
2003-10-10 Corinna Vinschen <vinschen@redhat.com> 2003-10-10 Corinna Vinschen <vinschen@redhat.com>
* sh-tdep.c (sh_use_struct_convention): Clean up to have a * sh-tdep.c (sh_use_struct_convention): Clean up to have a

View File

@ -568,7 +568,7 @@ sh_skip_prologue (CORE_ADDR start_pc)
All other aggregate types are returned by address. The caller All other aggregate types are returned by address. The caller
function passes the address of an area large enough to hold the function passes the address of an area large enough to hold the
aggregate value in R2. The called function stores the result in aggregate value in R2. The called function stores the result in
this location." this location.
To reiterate, structs smaller than 8 bytes could also be returned To reiterate, structs smaller than 8 bytes could also be returned
in memory, if they don't pass the "same size and alignment as an in memory, if they don't pass the "same size and alignment as an
@ -582,6 +582,16 @@ sh_skip_prologue (CORE_ADDR start_pc)
the return value from foo() will be in memory, not the return value from foo() will be in memory, not
in R0, because there is no 3-byte integer type. in R0, because there is no 3-byte integer type.
Similarly, in
struct s { char c[2]; } wibble;
struct s foo(void) { return wibble; }
because a struct containing two chars has alignment 1, that matches
type char, but size 2, that matches type short. There's no integer
type that has alignment 1 and size 2, so the struct is returned in
memory.
*/ */
static int static int