summaryrefslogtreecommitdiff
path: root/gas/doc
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2013-06-10 18:15:47 +0000
committerMaciej W. Rozycki <macro@linux-mips.org>2013-06-10 18:15:47 +0000
commit162d3ba115d8053b48ae7b3b8a92e7d195863e14 (patch)
treebf12cee7c6bff49049b2fafc30e0854a5ff1c8e3 /gas/doc
parentf871120a30a8e06787421e2acb3494e127658898 (diff)
downloadbinutils-redhat-162d3ba115d8053b48ae7b3b8a92e7d195863e14.tar.gz
gas/
* config/tc-mips.c (append_insn): Don't do branch relaxation for MIPS-3D instructions either. (md_convert_frag): Update the COPx branch mask accordingly. * config/tc-mips.c (md_show_usage): Document --[no-]relax-branch option. * doc/as.texinfo (Overview): Add --relax-branch and --no-relax-branch. * doc/c-mips.texi (MIPS Opts): Document --relax-branch and --no-relax-branch. gas/testsuite/ * gas/mips/relax-bc1any.l: New test. * gas/mips/relax-bc1any.s: New test source. * gas/mips/mips.exp: Run the new test.
Diffstat (limited to 'gas/doc')
-rw-r--r--gas/doc/as.texinfo6
-rw-r--r--gas/doc/c-mips.texi21
2 files changed, 27 insertions, 0 deletions
diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo
index 9c55ef4e4b..557d5e8f9f 100644
--- a/gas/doc/as.texinfo
+++ b/gas/doc/as.texinfo
@@ -1349,6 +1349,12 @@ value into the two single width floating point registers that make up
the double width register. By default @samp{--construct-floats} is
selected, allowing construction of these floating point constants.
+@item --relax-branch
+@itemx --no-relax-branch
+The @samp{--relax-branch} option enables the relaxation of out-of-range
+branches. By default @samp{--no-relax-branch} is selected, causing any
+out-of-range branches to produce an error.
+
@cindex emulation
@item --emulation=@var{name}
This option causes @command{@value{AS}} to emulate @command{@value{AS}} configured
diff --git a/gas/doc/c-mips.texi b/gas/doc/c-mips.texi
index b8953be94b..060febb684 100644
--- a/gas/doc/c-mips.texi
+++ b/gas/doc/c-mips.texi
@@ -388,6 +388,27 @@ width register by the single width registers.
By default @code{--construct-floats} is selected, allowing construction
of these floating point constants.
+@item --relax-branch
+@itemx --no-relax-branch
+The @samp{--relax-branch} option enables the relaxation of out-of-range
+branches. Any branches whose target cannot be reached directly are
+converted to a small instruction sequence including an inverse-condition
+branch to the physically next instruction, and a jump to the original
+target is inserted between the two instructions. In PIC code the jump
+will involve further instructions for address calculation.
+
+The @code{BC1ANY2F}, @code{BC1ANY2T}, @code{BC1ANY4F}, @code{BC1ANY4T},
+@code{BPOSGE32} and @code{BPOSGE64} instructions are excluded from
+relaxation, because they have no complementing counterparts. They could
+be relaxed with the use of a longer sequence involving another branch,
+however this has not been implemented and if their target turns out of
+reach, they produce an error even if branch relaxation is enabled.
+
+Also no @sc{mips16} branches are ever relaxed.
+
+By default @samp{--no-relax-branch} is selected, causing any out-of-range
+branches to produce an error.
+
@item --trap
@itemx --no-break
@c FIXME! (1) reflect these options (next item too) in option summaries;