diff options
author | Stephane Carrez <Stephane.Carrez@worldnet.fr> | 2001-05-20 13:37:11 +0200 |
---|---|---|
committer | Stephane Carrez <ciceron@gcc.gnu.org> | 2001-05-20 13:37:11 +0200 |
commit | dbf03ee31b88812a72359b625f6f261f32a21fa5 (patch) | |
tree | 6c9f312de663e0ff6cf364857f31f471a81be037 /gcc/config | |
parent | a078edf8139869ae6833c7e5d5e832d3c656dacc (diff) | |
download | gcc-dbf03ee31b88812a72359b625f6f261f32a21fa5.zip gcc-dbf03ee31b88812a72359b625f6f261f32a21fa5.tar.gz gcc-dbf03ee31b88812a72359b625f6f261f32a21fa5.tar.bz2 |
m68hc11.c (m68hc11_override_options): Ignore the -fpic and -fPIC options, clear flag_pic.
* config/m68hc11/m68hc11.c (m68hc11_override_options): Ignore
the -fpic and -fPIC options, clear flag_pic.
From-SVN: r42339
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/m68hc11/m68hc11.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/gcc/config/m68hc11/m68hc11.c b/gcc/config/m68hc11/m68hc11.c index f9de2dc..fed8d16 100644 --- a/gcc/config/m68hc11/m68hc11.c +++ b/gcc/config/m68hc11/m68hc11.c @@ -211,6 +211,14 @@ m68hc11_override_options () sizeof (m68hc11_reg_valid_for_index)); memset (m68hc11_reg_valid_for_base, 0, sizeof (m68hc11_reg_valid_for_base)); + /* Compilation with -fpic generates a wrong code. */ + if (flag_pic) + { + warning ("-f%s ignored for 68HC11/68HC12 (not supported)", + (flag_pic > 1) ? "PIC" : "pic"); + flag_pic = 0; + } + /* Configure for a 68hc11 processor. */ if (TARGET_M6811) { @@ -1808,7 +1816,8 @@ m68hc11_gen_lowpart (mode, x) if (mode == SImode) return gen_rtx (CONST_INT, VOIDmode, l[0]); - return gen_rtx (CONST_INT, VOIDmode, l[0] & 0x0ffff); + return gen_rtx (CONST_INT, VOIDmode, + trunc_int_for_mode (l[0], HImode)); } else { @@ -1817,7 +1826,8 @@ m68hc11_gen_lowpart (mode, x) if (mode == SImode) return gen_rtx (CONST_INT, VOIDmode, l[0]); else if (mode == HImode && GET_MODE (x) == SFmode) - return gen_rtx (CONST_INT, VOIDmode, l[0] & 0x0FFFF); + return gen_rtx (CONST_INT, VOIDmode, + trunc_int_for_mode (l[0], HImode)); else abort (); } @@ -1829,9 +1839,9 @@ m68hc11_gen_lowpart (mode, x) if (GET_CODE (x) == SUBREG && SUBREG_BYTE (x) != 0) { if (mode == SImode) - return gen_rtx_SUBREG (mode, SUBREG_REG (x), SUBREG_BYTE (x) + 2); + return gen_rtx_SUBREG (mode, SUBREG_REG (x), SUBREG_BYTE (x) + 4); else if (mode == HImode) - return gen_rtx_SUBREG (mode, SUBREG_REG (x), SUBREG_BYTE (x) + 1); + return gen_rtx_SUBREG (mode, SUBREG_REG (x), SUBREG_BYTE (x) + 2); else abort (); } @@ -1885,7 +1895,8 @@ m68hc11_gen_highpart (mode, x) if (mode == SImode) return gen_rtx (CONST_INT, VOIDmode, l[1]); - return gen_rtx (CONST_INT, VOIDmode, (l[1] >> 16) & 0x0ffff); + return gen_rtx (CONST_INT, VOIDmode, + trunc_int_for_mode ((l[1] >> 16), HImode)); } else { @@ -1895,7 +1906,8 @@ m68hc11_gen_highpart (mode, x) if (mode == SImode) return gen_rtx (CONST_INT, VOIDmode, l[1]); else if (mode == HImode && GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT) - return gen_rtx (CONST_INT, VOIDmode, (l[0] >> 16) & 0x0FFFF); + return gen_rtx (CONST_INT, VOIDmode, + trunc_int_for_mode ((l[0] >> 16), HImode)); else abort (); } @@ -1905,11 +1917,13 @@ m68hc11_gen_highpart (mode, x) if (mode == QImode) { - return gen_rtx (CONST_INT, VOIDmode, val >> 8); + return gen_rtx (CONST_INT, VOIDmode, + trunc_int_for_mode (val >> 8, QImode)); } else if (mode == HImode) { - return gen_rtx (CONST_INT, VOIDmode, val >> 16); + return gen_rtx (CONST_INT, VOIDmode, + trunc_int_for_mode (val >> 16, HImode)); } } if (mode == QImode && D_REG_P (x)) |