This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: error: missing terminating " character while modifying md file


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]