diff options
author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-11-16 21:10:09 +0000 |
---|---|---|
committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-11-16 21:10:09 +0000 |
commit | 51356f864933f664f7dfbf6e25ddcd97b587441a (patch) | |
tree | 036743ae971e4dddc0469a67fd6d6272b0801af8 /gcc/sdbout.c | |
parent | d70e58b6facc61184689890af429c7f0def003e8 (diff) | |
download | gcc-51356f864933f664f7dfbf6e25ddcd97b587441a.tar.gz |
Check target endianness at run time, not compile time
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8470 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sdbout.c')
-rw-r--r-- | gcc/sdbout.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/sdbout.c b/gcc/sdbout.c index 4426457797a..e5d643ec8d5 100644 --- a/gcc/sdbout.c +++ b/gcc/sdbout.c @@ -1252,12 +1252,12 @@ sdbout_parms (parms) the parm with the variable's declared type, and adjust the address if the least significant bytes (which we are using) are not the first ones. */ -#if BYTES_BIG_ENDIAN - if (TREE_TYPE (parms) != DECL_ARG_TYPE (parms)) + if (BYTES_BIG_ENDIAN + && TREE_TYPE (parms) != DECL_ARG_TYPE (parms)) current_sym_value += (GET_MODE_SIZE (TYPE_MODE (DECL_ARG_TYPE (parms))) - GET_MODE_SIZE (GET_MODE (DECL_RTL (parms)))); -#endif + if (GET_CODE (DECL_RTL (parms)) == MEM && GET_CODE (XEXP (DECL_RTL (parms), 0)) == PLUS && (GET_CODE (XEXP (XEXP (DECL_RTL (parms), 0), 1)) @@ -1374,11 +1374,11 @@ sdbout_reg_parms (parms) /* A parm declared char is really passed as an int, so it occupies the least significant bytes. On a big-endian machine those are not the low-numbered ones. */ -#if BYTES_BIG_ENDIAN - if (offset != -1 && TREE_TYPE (parms) != DECL_ARG_TYPE (parms)) + if (BYTES_BIG_ENDIAN + && offset != -1 + && TREE_TYPE (parms) != DECL_ARG_TYPE (parms)) offset += (GET_MODE_SIZE (TYPE_MODE (DECL_ARG_TYPE (parms))) - GET_MODE_SIZE (GET_MODE (DECL_RTL (parms)))); -#endif if (INTVAL (XEXP (XEXP (DECL_RTL (parms), 0), 1)) != offset) {...} #endif { |