On 17/12/2024 21:01, Torbjörn SVENSSON wrote:
> Regtested for arm-none-eabi (Cortex-M0/M23/M33/M55/M85).
>
> Ok for trunk?
>
> --
>
> Without the escape of the tab, newline and semicolon, the generated
> assembler output will not match the expected assmbler in the test cases.
>
> Fixes Linaro CI reported regression on r15-6166-gb7e11b499922 in
> https://linaro.atlassian.net/browse/GNU-1464.
>
> gcc/ChangeLog:
>
> * config/arm/thumb1.md (thumb1_cbz): Escape tab, newline and
> semicolon.
>
> Signed-off-by: Torbjörn SVENSSON <[email protected]>
> ---
> gcc/config/arm/thumb1.md | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/gcc/config/arm/thumb1.md b/gcc/config/arm/thumb1.md
> index b4d7c6ea981..09c4e81c1cc 100644
> --- a/gcc/config/arm/thumb1.md
> +++ b/gcc/config/arm/thumb1.md
> @@ -1145,9 +1145,9 @@ (define_insn "thumb1_cbz"
>
> switch (get_attr_length (insn))
> {
> - case 4: return "b%d0\t%l2";
> - case 6: return "b%D0\t.LCB%=;b\t%l2\t%@long jump\n.LCB%=:";
> - case 8: return "b%D0\t.LCB%=;bl\t%l2\t%@far jump\n.LCB%=:";
> + case 4: return \"b%d0\\t%l2\";
> + case 6: return \"b%D0\\t.LCB%=\;b\\t%l2\\t%@long jump\\n.LCB%=:\";
> + case 8: return \"b%D0\\t.LCB%=\;bl\\t%l2\\t%@far jump\\n.LCB%=:\";
> default: gcc_unreachable ();
This is overkill. There was a time when this was necessary, but it's mostly
not needed here. This particular pattern uses the 'braced text' way of
encapsulating the C fragment (ie the C fragment is enclosed in {} rather than
""), so quoting the C string is not needed. Secondly, md-read.cc will now pass
through \t unchanged. So that only leaves \; which has special meaning in
output templates (see md-read.cc:md_reader::read_escape () for the full
details).
In summary, we only need to escape the semicolons within the strings in cases 6
and 8.
OK with that change.
R.