aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorStephane Carrez <Stephane.Carrez@worldnet.fr>2001-05-20 13:37:11 +0200
committerStephane Carrez <ciceron@gcc.gnu.org>2001-05-20 13:37:11 +0200
commitdbf03ee31b88812a72359b625f6f261f32a21fa5 (patch)
tree6c9f312de663e0ff6cf364857f31f471a81be037 /gcc/config
parenta078edf8139869ae6833c7e5d5e832d3c656dacc (diff)
downloadgcc-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.c30
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))