This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Generating complex ASM output
- From: law at redhat dot com
- To: "D. Towner" <towner at cs dot bris dot ac dot uk>
- Cc: gcc <gcc at gcc dot gnu dot org>
- Date: Wed, 13 Mar 2002 08:59:53 -0700
- Subject: Re: Generating complex ASM output
- Reply-to: law at redhat dot com
In message <Pine.GSO.4.33.0203131534340.9633-100000@tao>, "D. Towner" writes:
> Hi all,
>
> I have a number of instruction patterns whose operands are rather
> complicated. Whilst it might be possible to generate operand codes to
> output these operands in different ways, I am looking for a way which is
> easier. Is it possible to:
>
> 1) Output the assembly directly to the output file. For example:
> (define_insn "*patternName"
> [pattern matching]
> ""
> "*{
> if (operand[0] == something) fprintf(asmFile,"foo");
> else fprintf(asmFile, "bar")}";
You might look at output_asm_insn instead of fprintf.
> 2) Safely allocate a new string, write the operands into that string, and
> return the string. I could use a static string, but will this be safe -
> how long must the string retain its contents before being overwritten by
> another pattern match and assembly generation?
The problem with allocating a new string is you don't have any hook
where you can delete the strong once you're done with it.
Static strings are used from time to time, though I think it's
generally cleaner to use output_asm_insn for this kind of situation.
jeff