aboutsummaryrefslogtreecommitdiff
path: root/gcc/dbxout.c
diff options
context:
space:
mode:
authorDoug Evans <devans@canuck.cygnus.com>1998-05-16 18:41:43 +0000
committerDoug Evans <devans@gcc.gnu.org>1998-05-16 18:41:43 +0000
commit620422fdbc4a3803005b745c456672974c6d29fd (patch)
tree903e5c957b04c10c1a1fa32f74ec9299b7889c19 /gcc/dbxout.c
parentc295379590f62612438a2e9dd854c984fe6b70ee (diff)
downloadgcc-620422fdbc4a3803005b745c456672974c6d29fd.zip
gcc-620422fdbc4a3803005b745c456672974c6d29fd.tar.gz
gcc-620422fdbc4a3803005b745c456672974c6d29fd.tar.bz2
dbxout.c (dbxout_parms): If mode of type of parameter living in memory doesn't match mode of DECL_RTL...
* dbxout.c (dbxout_parms): If mode of type of parameter living in memory doesn't match mode of DECL_RTL, make big endian correction. From-SVN: r19808
Diffstat (limited to 'gcc/dbxout.c')
-rw-r--r--gcc/dbxout.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index dc7b754..513f900 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -2403,6 +2403,15 @@ dbxout_parms (parms)
current_sym_value = INTVAL (XEXP (XEXP (DECL_RTL (parms), 0), 1));
current_sym_addr = 0;
+ /* Make a big endian correction if the mode of the type of the
+ parameter is not the same as the mode of the rtl. */
+ if (BYTES_BIG_ENDIAN
+ && TYPE_MODE (TREE_TYPE (parms)) != GET_MODE (DECL_RTL (parms))
+ && GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (parms))) < UNITS_PER_WORD)
+ {
+ current_sym_value += UNITS_PER_WORD - GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (parms)));
+ }
+
FORCE_TEXT;
if (DECL_NAME (parms))
{