aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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))
{