https://gcc.gnu.org/bugzilla/show_bug.cgi?id=33532
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |documentation,
| |internal-improvement
Summary|bogus escape |extra escapes in ia64.md
| |after conversion to use
| |braced strings
--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Note the original code used to do:
"
{
emit_library_call (gen_rtx_SYMBOL_REF (Pmode,
\"__ia64_save_stack_nonlocal\"),
LCT_NORMAL, VOIDmode, XEXP (operands[0], 0), Pmode,
operands[1], Pmode);
DONE;
}")
So there was a need to escape the quotes in that case.
Note ia64.md changed with r0-42897-g1d5d7a21e00696
(https://inbox.sourceware.org/gcc-patches/[email protected]/)
which removed the outer quotes to use the braced strings.
And the braced strings support was added by
https://gcc.gnu.org/pipermail/gcc-patches/2001-June/053023.html
which was after the original IA64 port was added.
So the escaped quotes is an artifact of a semi-incomplete conversions.
As far as your artificial pattern, there needs to be extra escape for the `\`
there as the md file reader thinks `\"` is just `"`.
That is it should be:
```
(define_insn "artificial"
[(unspec [(const_int 0)] 9999)]
""
{
return ".section .artificial,\\"r\\",@progbits";
}
[(set_attr "itanium_class" "ignore")
(set_attr "predicable" "no")])
```
Maybe the document here could be improved slightly too.
Right now the documentation says:
```
Double quote characters inside the braces are not
special. Therefore, if you write string constants in the C code, you
need not escape each quote character with a backslash.
```
But maybe it should be
```
Double quote characters inside the braces are not
special. Therefore, if you write string constants in the C code, you
need not escape each quote character with a backslash. Note escaped quotes are
treated similarly as quote character and if you need a escaped quote in a C
string, you need an extra backslash to escape the backslash like @code{"\\""}.
```
I will post a patch to update the documentation there.