[LLVMdev] [PATCH] Support asm comment output

Chris Lattner clattner at apple.com
Mon Jul 13 09:40:23 PDT 2009


On Jul 13, 2009, at 9:31 AM, David Greene wrote:
>> A couple of things are important to discuss:
>>
>> +    dynamic_cast<formatted_raw_ostream &>(O) << Comment(*c);
>>
>> We're trying to eliminate rtti, please don't add new uses of it.
>> Switching all of the asmprinter to statically use
>> formatted_raw_ostream would be appropriate.
>
> I was attempting to reduce the number of files affected, but if you
> want this change I'll go ahead and do it.

Makes sense, thanks.  Please do it as a separate patch from the other  
changes though since it will be large and mechanical.

>
>> Before we settle on whether this is the right thing to do or not, can
>> you talk about what comments you plan to add to these instructions?
>> Comments indicating what a memoperand are (for example) don't need to
>> be explicitly store in the machineinstr, they can be synthesized from
>> the MachineOperand directly.
>
> Some things we've used comments for:
>
> - Tag instructons with source line information (customers really  
> want this).

Right, that would be nice.  This should be synthesizable from the  
DebugLoc on the instruction in the asm printer, no need to redundantly  
encode it into the comment field.

> - Tag instructions as register spills or reloads.

I'm not sure what this means exactly, but would it be sufficient for  
the asmprinter to use isLoadFromStackSlot and print this if the FI is  
a spill slot?

> - Tag instructions with an ID of the tblgen pattern that generated  
> them.  This
>  is super useful for debugging.

this would also be really nice :).  This can be generated by the asm  
printer as well.

> - Tag instructions as top-of-loop, with nesting information (we use  
> this
>  to do some static analysis on asm files).

What part of the code generator would identify this?  It seems that  
the asmprinter could do this, but it is less obvious than the former  
ones.  It also seems that this is really a basic block property, not  
an instruction property.


If these are the planned uses of the comments, it would be nice try to  
not add a per-machine-instr list of comments.  Instead, the asmprinter  
could synthesize the list as it processes each instruction.  This  
makes the list of comments transient instead of persistent in the  
machineinstrs.  Does that sound reasonable to you?

-Chris





More information about the llvm-dev mailing list