[PATCH 1/2] R600: Use MCAsmInfoELF as AMDGPUMCAsmInfo base class

Tom Stellard tom at stellard.net
Tue Oct 7 13:08:53 PDT 2014


On Mon, Oct 06, 2014 at 03:27:42PM -0700, Matt Arsenault wrote:
> 
> On Oct 6, 2014, at 12:28 PM, Tom Stellard <thomas.stellard at amd.com> wrote:
> 
> > The main reason for this is that the MCAsmInfo class,
> > which we were previously using as the base class, sets
> > PrivateGlobalPrefix to "L", which causes all global
> > functions that start with L to be treated as local symbols.
> > 
> > MCAsmInfoELF sets PrivateGlobalPrefix to ".L", which is what
> > we want, and it is probably a good idea to use this as the
> > base class anyway, since we are emitting ELF binaries.
> > ---
> > lib/Target/R600/MCTargetDesc/AMDGPUMCAsmInfo.cpp | 5 ++++-
> > lib/Target/R600/MCTargetDesc/AMDGPUMCAsmInfo.h   | 9 +++++++--
> > 2 files changed, 11 insertions(+), 3 deletions(-)
> > 
> > diff --git a/lib/Target/R600/MCTargetDesc/AMDGPUMCAsmInfo.cpp b/lib/Target/R600/MCTargetDesc/AMDGPUMCAsmInfo.cpp
> > index 8e43800..a795f3d 100644
> > --- a/lib/Target/R600/MCTargetDesc/AMDGPUMCAsmInfo.cpp
> > +++ b/lib/Target/R600/MCTargetDesc/AMDGPUMCAsmInfo.cpp
> > @@ -11,7 +11,7 @@
> > #include "AMDGPUMCAsmInfo.h"
> > 
> > using namespace llvm;
> > -AMDGPUMCAsmInfo::AMDGPUMCAsmInfo(StringRef &TT) : MCAsmInfo() {
> > +AMDGPUMCAsmInfo::AMDGPUMCAsmInfo(StringRef &TT) : MCAsmInfoELF() {
> >   HasSingleParameterDotFile = false;
> >   //===------------------------------------------------------------------===//
> >   HasSubsectionsViaSymbols = true;
> > @@ -51,6 +51,9 @@ AMDGPUMCAsmInfo::AMDGPUMCAsmInfo(StringRef &TT) : MCAsmInfo() {
> >   HasDotTypeDotSizeDirective = false;
> >   HasNoDeadStrip = true;
> >   WeakRefDirective = ".weakref\t";
> > +  // Setting this to false to avoid spam of clang/llvm version information
> > +  // in assembly output.
> > +  HasIdentDirective = false;
> This seems like useful information. Why disable it?
> 

Ok, I'll leave it in.

-Tom

> 
> >   //===--- Dwarf Emission Directives -----------------------------------===//
> >   SupportsDebugInformation = true;
> > }
> > diff --git a/lib/Target/R600/MCTargetDesc/AMDGPUMCAsmInfo.h b/lib/Target/R600/MCTargetDesc/AMDGPUMCAsmInfo.h
> > index abbeab9..637a977 100644
> > --- a/lib/Target/R600/MCTargetDesc/AMDGPUMCAsmInfo.h
> > +++ b/lib/Target/R600/MCTargetDesc/AMDGPUMCAsmInfo.h
> > @@ -14,12 +14,17 @@
> > #ifndef LLVM_LIB_TARGET_R600_MCTARGETDESC_AMDGPUMCASMINFO_H
> > #define LLVM_LIB_TARGET_R600_MCTARGETDESC_AMDGPUMCASMINFO_H
> > 
> > -#include "llvm/MC/MCAsmInfo.h"
> > +#include "llvm/MC/MCAsmInfoELF.h"
> > namespace llvm {
> > 
> > class StringRef;
> > 
> > -class AMDGPUMCAsmInfo : public MCAsmInfo {
> > +// If you need to create another MCAsmInfo class, which inherits from MCAsmInfo,
> > +// you will need to make sure your new class sets PrivateGlobalPrefix to
> > +// a prefix that won't appeary in a fuction name.  The default value
> > +// for PrivateGlobalPrefix is 'L', so it will consider any function starting
> > +// with 'L' as a local symbol.
> > +class AMDGPUMCAsmInfo : public MCAsmInfoELF {
> > public:
> >   explicit AMDGPUMCAsmInfo(StringRef &TT);
> >   const MCSection* getNonexecutableStackSection(MCContext &CTX) const override;
> > -- 
> > 1.8.5.5
> > 
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 
> 
> _______________________________________________
> 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