OSDN Git Service

* dbxout.c (dbxout_parms): If mode of type of parameter living
authordevans <devans@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 16 May 1998 18:41:43 +0000 (18:41 +0000)
committerdevans <devans@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 16 May 1998 18:41:43 +0000 (18:41 +0000)
in memory doesn't match mode of DECL_RTL, make big endian correction.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@19808 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/dbxout.c

index c281bdd..e6590a4 100644 (file)
@@ -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.
index dc7b754..513f900 100644 (file)
@@ -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))
              {