aboutsummaryrefslogtreecommitdiff
path: root/gcc
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
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')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/dbxout.c9
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c281bdd..e6590a4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Sat May 16 18:32:45 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * dbxout.c (dbxout_parms): If mode of type of parameter living
+ in memory doesn't match mode of DECL_RTL, make big endian correction.
+
Fri May 15 21:40:06 1998 John Wehle (john@feith.com)
* i386.md (movdi-1, movdi): Rewrite based on SI move patterns.
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))
{