From: Stephane Carrez Date: Sun, 20 May 2001 11:37:11 +0000 (+0200) Subject: m68hc11.c (m68hc11_override_options): Ignore the -fpic and -fPIC options, clear flag_pic. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=dbf03ee31b88812a72359b625f6f261f32a21fa5;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8d5c4f835c2..8b2d873767d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-05-20 Stephane Carrez + + * config/m68hc11/m68hc11.c (m68hc11_override_options): Ignore + the -fpic and -fPIC options, clear flag_pic. + 2001-05-20 Neil Booth * hashtable.c (calc_hash): Fix HASHSTEP definition. diff --git a/gcc/config/m68hc11/m68hc11.c b/gcc/config/m68hc11/m68hc11.c index f9de2dcf698..fed8d16a1e3 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))