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 <torbjorn.svens...@foss.st.com> > --- > 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.