[llvm-commits] [llvm] r80427 - in /llvm/trunk: include/llvm/CodeGen/AsmPrinter.h lib/CodeGen/AsmPrinter/AsmPrinter.cpp

Chris Lattner clattner at apple.com
Sat Aug 29 17:21:11 PDT 2009


On Aug 29, 2009, at 5:17 AM, Bill Wendling wrote:
> URL: http://llvm.org/viewvc/llvm-project?rev=80427&view=rev
> Log:
> Add a form of EOL which emits the text version of a DWARF format  
> encoding. This
> doesn't handle all values of the formatting. Those can be added as  
> needed.

Ok, please don't add the std::string version though.  Callers can just  
call .cstr() if they need to.  I'd like to eventually stomp out the  
std::strings in the asmprinter, and this makes it easier to find them.

Thanks Bill!

-Chris

>
> Modified:
>    llvm/trunk/include/llvm/CodeGen/AsmPrinter.h
>    llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
>
> Modified: llvm/trunk/include/llvm/CodeGen/AsmPrinter.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/AsmPrinter.h?rev=80427&r1=80426&r2=80427&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/include/llvm/CodeGen/AsmPrinter.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/AsmPrinter.h Sat Aug 29 07:17:53  
> 2009
> @@ -268,7 +268,9 @@
>     void EOL() const;
>     void EOL(const std::string &Comment) const;
>     void EOL(const char* Comment) const;
> -
> +    void EOL(const std::string &Comment, unsigned Encoding) const;
> +    void EOL(const char *Comment, unsigned Encoding) const;
> +
>     /// EmitULEB128Bytes - Emit an assembler byte data directive to  
> compose an
>     /// unsigned leb128 value.
>     void EmitULEB128Bytes(unsigned Value) const;
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=80427&r1=80426&r2=80427&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Sat Aug 29  
> 07:17:53 2009
> @@ -604,6 +604,56 @@
>   O << '\n';
> }
>
> +static const char *DecodeDWARFEncoding(unsigned Encoding) {
> +  switch (Encoding) {
> +  case dwarf::DW_EH_PE_absptr:
> +    return "absptr";
> +  case dwarf::DW_EH_PE_omit:
> +    return "omit";
> +  case dwarf::DW_EH_PE_pcrel:
> +    return "pcrel";
> +  case dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_udata4:
> +    return "pcrel udata4";
> +  case dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4:
> +    return "pcrel sdata4";
> +  case dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_udata8:
> +    return "pcrel udata8";
> +  case dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata8:
> +    return "pcrel sdata8";
> +  case dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | 
> dwarf::DW_EH_PE_udata4:
> +    return "indirect pcrel udata4";
> +  case dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | 
> dwarf::DW_EH_PE_sdata4:
> +    return "indirect pcrel sdata4";
> +  case dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | 
> dwarf::DW_EH_PE_udata8:
> +    return "indirect pcrel udata8";
> +  case dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | 
> dwarf::DW_EH_PE_sdata8:
> +    return "indirect pcrel sdata8";
> +  }
> +
> +  return 0;
> +}
> +
> +void AsmPrinter::EOL(const std::string &Comment, unsigned Encoding)  
> const {
> +  if (VerboseAsm && !Comment.empty()) {
> +    EOL(Comment.c_str(), Encoding);
> +    return;
> +  }
> +  O << '\n';
> +}
> +
> +void AsmPrinter::EOL(const char *Comment, unsigned Encoding) const {
> +  if (VerboseAsm && *Comment) {
> +    O.PadToColumn(MAI->getCommentColumn());
> +    O << MAI->getCommentString()
> +      << ' '
> +      << Comment;
> +
> +    if (const char *EncStr = DecodeDWARFEncoding(Encoding))
> +      O << " (" << EncStr << ')';
> +  }
> +  O << '\n';
> +}
> +
> /// EmitULEB128Bytes - Emit an assembler byte data directive to  
> compose an
> /// unsigned leb128 value.
> void AsmPrinter::EmitULEB128Bytes(unsigned Value) const {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list