Add new command line switch --no-construct-floats
This commit is contained in:
parent
fe794dc69d
commit
119d663aa4
3 changed files with 63 additions and 6 deletions
|
@ -1,3 +1,17 @@
|
|||
2000-07-14 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* config/tc-mips.c (mips_disable_float_construction): New
|
||||
static variable. Set to true if doubles should not be
|
||||
constructed by loading two single width fp registers with
|
||||
halves of the value.
|
||||
(mips_ip): Test mips_disable_float_construction.
|
||||
(md_longopts): Add command line switches --construct-floats
|
||||
and --no-construct-floats.
|
||||
(md_parse_option): Parse new command line options.
|
||||
(md_show_usage): Describe new command line options.
|
||||
|
||||
* doc/c-mips.texi: Document new command line options.
|
||||
|
||||
2000-07-13 Koundinya K <kk@ddeorg.soft.net>
|
||||
|
||||
* configure.in: Remove the test /usr/dde for mips-*-sysv4*MP*
|
||||
|
|
|
@ -313,6 +313,14 @@ static int mips_big_got;
|
|||
instructions. */
|
||||
static int mips_trap;
|
||||
|
||||
/* 1 if double width floating point constants should not be constructed
|
||||
by a assembling two single width halves into two single width floating
|
||||
point registers which just happen to alias the double width destination
|
||||
register. On some architectures this aliasing can be disabled by a bit
|
||||
in the status register, and the settin gof this bit cannot be determined
|
||||
automatically at assemble time. */
|
||||
static int mips_disable_float_construction;
|
||||
|
||||
/* Non-zero if any .set noreorder directives were used. */
|
||||
|
||||
static int mips_any_noreorder;
|
||||
|
@ -7601,6 +7609,7 @@ mips_ip (str, ip)
|
|||
imm_expr.X_add_number = bfd_getb32 (temp);
|
||||
}
|
||||
else if (length > 4
|
||||
&& ! mips_disable_float_construction
|
||||
&& ((temp[0] == 0 && temp[1] == 0)
|
||||
|| (temp[2] == 0 && temp[3] == 0))
|
||||
&& ((temp[4] == 0 && temp[5] == 0)
|
||||
|
@ -8826,6 +8835,10 @@ struct option md_longopts[] = {
|
|||
{"mcpu", required_argument, NULL, OPTION_MCPU},
|
||||
#define OPTION_MEMBEDDED_PIC (OPTION_MD_BASE + 6)
|
||||
{"membedded-pic", no_argument, NULL, OPTION_MEMBEDDED_PIC},
|
||||
|
||||
#define OPTION_CALL_SHARED (OPTION_MD_BASE + 7)
|
||||
#define OPTION_NON_SHARED (OPTION_MD_BASE + 8)
|
||||
|
||||
#define OPTION_TRAP (OPTION_MD_BASE + 9)
|
||||
{"trap", no_argument, NULL, OPTION_TRAP},
|
||||
{"no-break", no_argument, NULL, OPTION_TRAP},
|
||||
|
@ -8848,16 +8861,21 @@ struct option md_longopts[] = {
|
|||
{"m4100", no_argument, NULL, OPTION_M4100},
|
||||
#define OPTION_NO_M4100 (OPTION_MD_BASE + 18)
|
||||
{"no-m4100", no_argument, NULL, OPTION_NO_M4100},
|
||||
|
||||
#define OPTION_XGOT (OPTION_MD_BASE + 19)
|
||||
#define OPTION_32 (OPTION_MD_BASE + 20)
|
||||
#define OPTION_64 (OPTION_MD_BASE + 21)
|
||||
|
||||
#define OPTION_MIPS16 (OPTION_MD_BASE + 22)
|
||||
{"mips16", no_argument, NULL, OPTION_MIPS16},
|
||||
#define OPTION_NO_MIPS16 (OPTION_MD_BASE + 23)
|
||||
{"no-mips16", no_argument, NULL, OPTION_NO_MIPS16},
|
||||
|
||||
#define OPTION_M3900 (OPTION_MD_BASE + 26)
|
||||
{"m3900", no_argument, NULL, OPTION_M3900},
|
||||
#define OPTION_NO_M3900 (OPTION_MD_BASE + 27)
|
||||
{"no-m3900", no_argument, NULL, OPTION_NO_M3900},
|
||||
|
||||
|
||||
#define OPTION_MABI (OPTION_MD_BASE + 38)
|
||||
{"mabi", required_argument, NULL, OPTION_MABI},
|
||||
|
||||
|
@ -8866,11 +8884,6 @@ struct option md_longopts[] = {
|
|||
#define OPTION_NO_M7000_HILO_FIX (OPTION_MD_BASE + 40)
|
||||
{"no-fix-7000", no_argument, NULL, OPTION_NO_M7000_HILO_FIX},
|
||||
|
||||
#define OPTION_CALL_SHARED (OPTION_MD_BASE + 7)
|
||||
#define OPTION_NON_SHARED (OPTION_MD_BASE + 8)
|
||||
#define OPTION_XGOT (OPTION_MD_BASE + 19)
|
||||
#define OPTION_32 (OPTION_MD_BASE + 20)
|
||||
#define OPTION_64 (OPTION_MD_BASE + 21)
|
||||
#ifdef OBJ_ELF
|
||||
{"KPIC", no_argument, NULL, OPTION_CALL_SHARED},
|
||||
{"xgot", no_argument, NULL, OPTION_XGOT},
|
||||
|
@ -8885,6 +8898,12 @@ struct option md_longopts[] = {
|
|||
{"mgp32", no_argument, NULL, OPTION_GP32},
|
||||
{"mgp64", no_argument, NULL, OPTION_GP64},
|
||||
|
||||
#define OPTION_CONSTRUCT_FLOATS (OPTION_MD_BASE + 43)
|
||||
{"construct-floats", no_argument, NULL, OPTION_CONSTRUCT_FLOATS},
|
||||
|
||||
#define OPTION_NO_CONSTRUCT_FLOATS (OPTION_MD_BASE + 44)
|
||||
{"no-construct-floats", no_argument, NULL, OPTION_NO_CONSTRUCT_FLOATS},
|
||||
|
||||
{NULL, no_argument, NULL, 0}
|
||||
};
|
||||
size_t md_longopts_size = sizeof(md_longopts);
|
||||
|
@ -8896,6 +8915,14 @@ md_parse_option (c, arg)
|
|||
{
|
||||
switch (c)
|
||||
{
|
||||
case OPTION_CONSTRUCT_FLOATS:
|
||||
mips_disable_float_construction = 0;
|
||||
break;
|
||||
|
||||
case OPTION_NO_CONSTRUCT_FLOATS:
|
||||
mips_disable_float_construction = 1;
|
||||
break;
|
||||
|
||||
case OPTION_TRAP:
|
||||
mips_trap = 1;
|
||||
break;
|
||||
|
@ -9338,6 +9365,7 @@ MIPS options:\n\
|
|||
fprintf(stream, _("\
|
||||
-O0 remove unneeded NOPs, do not swap branches\n\
|
||||
-O remove unneeded NOPs and swap branches\n\
|
||||
--[no-]construct-floats [dis]allow floating point values to be constructed\n\
|
||||
--trap, --no-break trap exception on div by 0 and mult overflow\n\
|
||||
--break, --no-trap break exception on div by 0 and mult overflow\n"));
|
||||
#ifdef OBJ_ELF
|
||||
|
|
|
@ -151,6 +151,21 @@ other assemblers, which use it to turn off C style preprocessing. With
|
|||
@sc{gnu} @code{@value{AS}}, there is no need for @samp{-nocpp}, because the
|
||||
@sc{gnu} assembler itself never runs the C preprocessor.
|
||||
|
||||
@item --construct-floats
|
||||
@itemx --no-construct-floats
|
||||
@cindex --construct-floats
|
||||
@cindex --no-construct-floats
|
||||
The @code{--no-construct-floats} option disables the construction of
|
||||
double width floating point constants by loading the two halves of the
|
||||
value into the two single width floating point registers that make up
|
||||
the double width register. This feature is useful if the processor
|
||||
support the FR bit in its status register, and this bit is known (by
|
||||
the programmer) to be set. This bit prevents the aliasing of the double
|
||||
width register by the single width registers.
|
||||
|
||||
By default @code {--construct-floats} is selected, allowing construction
|
||||
of these floating point constants.
|
||||
|
||||
@item --trap
|
||||
@itemx --no-break
|
||||
@c FIXME! (1) reflect these options (next item too) in option summaries;
|
||||
|
|
Loading…
Reference in a new issue