Omar wrote:
Ok, so after weeks of reading and looking at multiple .md files, I
felt ready to give it a try and decided to create some define_split's
on my own.
I created a define_split RTL pattern which included this condition:
"reload_completed
&& GET_CODE (operands[1]) == MEM
&& GET_CODE (XEXP (operands[1], 0)) == PLUS"
When I try to compile it I get:
../../gcc/config/c816/c816.md:36 error: missing terminating " character
../../gcc/config/c816/c816.md:37: error: stray '\' in program
...
If instead, I place the condition all in a single line:
"reload_completed && GET_CODE (operands[1]) == MEM && GET_CODE (XEXP
(operands[1], 0)) == PLUS"
then gcc is happy.
I have been searching the web for hours now, but I have not been able
to find what is causing this.
Does anyone have a suggestion on what might be causing this issue?
It has to be a valid C string. You get that error for the same reason
that you get it from this program:
----------->8---------
int f(const char *p);
int j(void)
{
return f("hello
world");
}
----------->8---------
If the condition is complex, create a macro for it in your target.h file
and use the macro in the .md file.
This is done in mips.h (see GENERATE_LL_SC) as well as I imagine other
places if you want an example.
David Daney