[LLVMdev] #APP/#NOAPP
reed kotler
rkotler at mips.com
Mon May 6 08:40:30 PDT 2013
On 05/06/2013 07:52 AM, Rafael EspĂndola wrote:
> On 6 May 2013 10:29, reed kotler <rkotler at mips.com> wrote:
>> I want to disable the #APP/#NOAPP for compiler generated inline asm.
>>
>> Unfortunately, you can change the string APP,NOAPP, but it still will put
>> the "#" there and create
>> a line.
>>
>> In the comments it said that the strings were #APP,#NOAPP but really it's
>> just the part after the
>> comment_string=='#'
>>
>> I'd like to just add a mode flag to AsmPrinter for this.
>>
>> Any objections?
> Yes. I don't think we should introduce the notion of "compiler
> generated inline asm".
Hi Rafael,
At this time I have to generate compiler stubs for mips16/32 floating
point interoperability and I've already implemented it all and I did it
by generating inline assembly in a module pass.
The whole problem this is solving is complicated and has many cases and
my solution was very clean and easy to understand.
It's all in the Mips port and I don't have to time or desire to redo the
whole thing right now.
It's working fine just that it's ugly to see those APP/NOAPP markers.
I think that I can actually replace the inline assembly for these
particular stubs with some non inline asm using special calling
conventions but I don't want to do that right now. I've filed a local
bug at mips against myself to do that work. There are some further
issues here but Akira and I think
it's certainly doable.
I want to finish testing and checking in what I have and then will work
on improvements later.
There are many things to still do for mips 16 and this part already is
done and works as in gcc.
I'm still debugging and writing test cases.
I think that it's perfectly valid to generate inline assembler and it
looks 1000 times cleaner than if I tried to do this same work with
selection DAG.
There are other stubs to be created for other parts of the mips32 port.
So I'd like to get a solution to these ugly APP/NOAPP markers.
Maybe you would not do things this way but I think it's a perfectly
valid approach.
No two people have 100% the same idea of what is best practices.
The following kind of patch works without adding a mode to asm printer
but in general is harder
for people to use since they have to get a hook to MCAsm in order to
change the inline_asm_start/end
strings. (In AsmPrinter) on a per function basis.
if (OutStreamer.hasRawTextSupport() && MAI->getInlineAsmStart()[0])
OutStreamer.EmitRawText(Twine("\t")+MAI->getCommentString()+
MAI->getInlineAsmStart());
So a simple method in AsmPrinter would be the easiest for people to use.
It just turns off the APP/NOAPP markers which we should be able to do
anyway; it's independent of the discussion regarding the goodness or not
of the compiler emitting inline assembly.
Reed
>> Alternately I could change the logic in AsmPrinter to not print a line if
>> the inlline asm start/end string is null.
>>
>> ????
>>
>> TIA.
>>
>> Reed
>>
> Cheers,
> Rafael
More information about the llvm-dev
mailing list