This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[mep] fix an accidental override
- From: DJ Delorie <dj at redhat dot com>
- To: binutils at sourceware dot org
- Date: Tue, 7 Jul 2009 17:12:55 -0400
- Subject: [mep] fix an accidental override
The IVC2 opcodes are controlled directly by -mivc2, but indirectly
through -mcp64 as well. So, enabling other options cuases IVC2 to be
disabled. This corrects that, by only defaulting a range of related
core options. Committed.
* config/tc-mep.c (md_begin): Don't reset the coprocessor options
when enabling other options without a specific configuration.
Index: config/tc-mep.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-mep.c,v
retrieving revision 1.9
diff -p -U3 -r1.9 tc-mep.c
--- config/tc-mep.c 24 Jun 2009 00:51:09 -0000 1.9
+++ config/tc-mep.c 7 Jul 2009 21:10:11 -0000
@@ -176,6 +176,23 @@ struct option md_longopts[] = {
{ NULL, 0, NULL, 0 } };
size_t md_longopts_size = sizeof (md_longopts);
+/* Options which default to on/off together. See the comment where
+ this is used for details. Note that CP and CP64 are not in this
+ list because disabling those overrides the -mivc2 option. */
+#define OPTION_MASK \
+ ( (1 << CGEN_INSN_OPTIONAL_BIT_INSN) \
+ | (1 << CGEN_INSN_OPTIONAL_MUL_INSN) \
+ | (1 << CGEN_INSN_OPTIONAL_DIV_INSN) \
+ | (1 << CGEN_INSN_OPTIONAL_DEBUG_INSN) \
+ | (1 << CGEN_INSN_OPTIONAL_LDZ_INSN) \
+ | (1 << CGEN_INSN_OPTIONAL_ABS_INSN) \
+ | (1 << CGEN_INSN_OPTIONAL_AVE_INSN) \
+ | (1 << CGEN_INSN_OPTIONAL_MINMAX_INSN) \
+ | (1 << CGEN_INSN_OPTIONAL_CLIP_INSN) \
+ | (1 << CGEN_INSN_OPTIONAL_SAT_INSN) \
+ | (1 << CGEN_INSN_OPTIONAL_UCI_INSN) \
+ | (1 << CGEN_INSN_OPTIONAL_DSP_INSN) )
+
const char * md_shortopts = "";
static int optbits = 0;
static int optbitset = 0;
@@ -462,7 +479,10 @@ md_begin ()
specified. If the user specifies options and a config, the
options modify the config. */
if (optbits && mep_config_index == 0)
- MEP_OMASK = optbits;
+ {
+ MEP_OMASK &= ~OPTION_MASK;
+ MEP_OMASK |= optbits;
+ }
else
MEP_OMASK = (MEP_OMASK & ~optbitset) | optbits;