[llvm] r244698 - PseudoSourceValue: Transform the mips subclass to target independent subclasses

Alex L via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 13 09:08:30 PDT 2015


Sorry about that, I should have included a link to the review thread in the
messages for all of these commits, as it's difficult to search for it using
just the individual commit messages.

Alex

2015-08-13 4:01 GMT-07:00 Daniel Sanders <Daniel.Sanders at imgtec.com>:

> I've just found the thread (
> http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20150810/292871.html).
> I couldn't find it before because the subject line is very different and
> there was no link.
> ________________________________________
> From: llvm-commits [llvm-commits-bounces at lists.llvm.org] on behalf of
> Daniel Sanders via llvm-commits [llvm-commits at lists.llvm.org]
> Sent: 13 August 2015 11:44
> To: Alex Lorenz; llvm-commits at lists.llvm.org
> Subject: RE: [llvm] r244698 - PseudoSourceValue: Transform the mips
> subclass to target independent subclasses
>
> I've now read through this patch and it LGTM. We just need to address the
> issue of the commit saying it has been reviewed and the apparent lack of a
> review thread.
> ________________________________________
> From: llvm-commits [llvm-commits-bounces at lists.llvm.org] on behalf of
> Daniel Sanders via llvm-commits [llvm-commits at lists.llvm.org]
> Sent: 13 August 2015 11:05
> To: Alex Lorenz; llvm-commits at lists.llvm.org
> Subject: RE: [llvm] r244698 - PseudoSourceValue: Transform the mips
> subclass to target independent subclasses
>
> Hi,
>
> Where was this reviewed? I can't find the thread on the list and there
> doesn't seem to be a Phabricator review either.
> ________________________________________
> From: llvm-commits [llvm-commits-bounces at lists.llvm.org] on behalf of
> Alex Lorenz via llvm-commits [llvm-commits at lists.llvm.org]
> Sent: 12 August 2015 00:23
> To: llvm-commits at lists.llvm.org
> Subject: [llvm] r244698 - PseudoSourceValue: Transform the mips subclass
> to target independent subclasses
>
> Author: arphaman
> Date: Tue Aug 11 18:23:17 2015
> New Revision: 244698
>
> URL: http://llvm.org/viewvc/llvm-project?rev=244698&view=rev
> Log:
> PseudoSourceValue: Transform the mips subclass to target independent
> subclasses
>
> This commit transforms the mips-specific 'MipsCallEntry' subclass of the
> 'PseudoSourceValue' class into two, target-independent subclasses named
> 'GlobalValuePseudoSourceValue' and 'ExternalSymbolPseudoSourceValue'.
>
> This change makes it easier to serialize the pseudo source values by
> removing
> target-specific pseudo source values.
>
> Reviewers: Akira Hatanaka
>
> Modified:
>     llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h
>     llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp
>     llvm/trunk/lib/Target/Mips/MipsMachineFunction.cpp
>     llvm/trunk/lib/Target/Mips/MipsMachineFunction.h
>
> Modified: llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h?rev=244698&r1=244697&r2=244698&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h (original)
> +++ llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h Tue Aug 11
> 18:23:17 2015
> @@ -14,7 +14,10 @@
>  #ifndef LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
>  #define LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
>
> +#include "llvm/ADT/StringMap.h"
> +#include "llvm/IR/GlobalValue.h"
>  #include "llvm/IR/Value.h"
> +#include "llvm/IR/ValueMap.h"
>  #include <map>
>
>  namespace llvm {
> @@ -30,7 +33,15 @@ raw_ostream &operator<<(raw_ostream &OS,
>  /// below the stack frame (e.g., argument space), or constant pool.
>  class PseudoSourceValue {
>  public:
> -  enum PSVKind { Stack, GOT, JumpTable, ConstantPool, FixedStack, MipsPSV
> };
> +  enum PSVKind {
> +    Stack,
> +    GOT,
> +    JumpTable,
> +    ConstantPool,
> +    FixedStack,
> +    GlobalValueCallEntry,
> +    ExternalSymbolCallEntry
> +  };
>
>  private:
>    PSVKind Kind;
> @@ -90,10 +101,45 @@ public:
>    int getFrameIndex() const { return FI; }
>  };
>
> +class CallEntryPseudoSourceValue : public PseudoSourceValue {
> +protected:
> +  CallEntryPseudoSourceValue(PSVKind Kind);
> +
> +public:
> +  bool isConstant(const MachineFrameInfo *) const override;
> +  bool isAliased(const MachineFrameInfo *) const override;
> +  bool mayAlias(const MachineFrameInfo *) const override;
> +};
> +
> +/// A specialized pseudo soruce value for holding GlobalValue values.
> +class GlobalValuePseudoSourceValue : public CallEntryPseudoSourceValue {
> +  const GlobalValue *GV;
> +
> +public:
> +  GlobalValuePseudoSourceValue(const GlobalValue *GV);
> +
> +  const GlobalValue *getValue() const { return GV; }
> +};
> +
> +/// A specialized pseudo source value for holding external symbol values.
> +class ExternalSymbolPseudoSourceValue : public CallEntryPseudoSourceValue
> {
> +  const char *ES;
> +
> +public:
> +  ExternalSymbolPseudoSourceValue(const char *ES);
> +
> +  const char *getSymbol() const { return ES; }
> +};
> +
>  /// Manages creation of pseudo source values.
>  class PseudoSourceValueManager {
>    const PseudoSourceValue StackPSV, GOTPSV, JumpTablePSV, ConstantPoolPSV;
>    std::map<int, std::unique_ptr<FixedStackPseudoSourceValue>> FSValues;
> +  StringMap<std::unique_ptr<const ExternalSymbolPseudoSourceValue>>
> +      ExternalCallEntries;
> +  ValueMap<const GlobalValue *,
> +           std::unique_ptr<const GlobalValuePseudoSourceValue>>
> +      GlobalCallEntries;
>
>  public:
>    PseudoSourceValueManager();
> @@ -118,6 +164,10 @@ public:
>    /// Return a pseudo source value referencing a fixed stack frame entry,
>    /// e.g., a spill slot.
>    const PseudoSourceValue *getFixedStack(int FI);
> +
> +  const PseudoSourceValue *getGlobalValueCallEntry(const GlobalValue *GV);
> +
> +  const PseudoSourceValue *getExternalSymbolCallEntry(const char *ES);
>  };
>
>  } // end namespace llvm
>
> Modified: llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp?rev=244698&r1=244697&r2=244698&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp (original)
> +++ llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp Tue Aug 11 18:23:17 2015
> @@ -24,7 +24,8 @@
>  using namespace llvm;
>
>  static const char *const PSVNames[] = {
> -    "Stack", "GOT", "JumpTable", "ConstantPool", "FixedStack",
> "MipsCallEntry"};
> +    "Stack", "GOT", "JumpTable", "ConstantPool", "FixedStack",
> +    "GlobalValueCallEntry", "ExternalSymbolCallEntry"};
>
>  PseudoSourceValue::PseudoSourceValue(PSVKind Kind) : Kind(Kind) {}
>
> @@ -76,6 +77,28 @@ void FixedStackPseudoSourceValue::printC
>    OS << "FixedStack" << FI;
>  }
>
> +CallEntryPseudoSourceValue::CallEntryPseudoSourceValue(PSVKind Kind)
> +    : PseudoSourceValue(Kind) {}
> +
> +bool CallEntryPseudoSourceValue::isConstant(const MachineFrameInfo *)
> const {
> +  return false;
> +}
> +
> +bool CallEntryPseudoSourceValue::isAliased(const MachineFrameInfo *)
> const {
> +  return false;
> +}
> +
> +bool CallEntryPseudoSourceValue::mayAlias(const MachineFrameInfo *) const
> {
> +  return false;
> +}
> +
> +GlobalValuePseudoSourceValue::GlobalValuePseudoSourceValue(
> +    const GlobalValue *GV)
> +    : CallEntryPseudoSourceValue(GlobalValueCallEntry), GV(GV) {}
> +
> +ExternalSymbolPseudoSourceValue::ExternalSymbolPseudoSourceValue(const
> char *ES)
> +    : CallEntryPseudoSourceValue(ExternalSymbolCallEntry), ES(ES) {}
> +
>  PseudoSourceValueManager::PseudoSourceValueManager()
>      : StackPSV(PseudoSourceValue::Stack), GOTPSV(PseudoSourceValue::GOT),
>        JumpTablePSV(PseudoSourceValue::JumpTable),
> @@ -101,3 +124,21 @@ const PseudoSourceValue *PseudoSourceVal
>      V = llvm::make_unique<FixedStackPseudoSourceValue>(FI);
>    return V.get();
>  }
> +
> +const PseudoSourceValue *
> +PseudoSourceValueManager::getGlobalValueCallEntry(const GlobalValue *GV) {
> +  std::unique_ptr<const GlobalValuePseudoSourceValue> &E =
> +      GlobalCallEntries[GV];
> +  if (!E)
> +    E = llvm::make_unique<GlobalValuePseudoSourceValue>(GV);
> +  return E.get();
> +}
> +
> +const PseudoSourceValue *
> +PseudoSourceValueManager::getExternalSymbolCallEntry(const char *ES) {
> +  std::unique_ptr<const ExternalSymbolPseudoSourceValue> &E =
> +      ExternalCallEntries[ES];
> +  if (!E)
> +    E = llvm::make_unique<ExternalSymbolPseudoSourceValue>(ES);
> +  return E.get();
> +}
>
> Modified: llvm/trunk/lib/Target/Mips/MipsMachineFunction.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsMachineFunction.cpp?rev=244698&r1=244697&r2=244698&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsMachineFunction.cpp (original)
> +++ llvm/trunk/lib/Target/Mips/MipsMachineFunction.cpp Tue Aug 11 18:23:17
> 2015
> @@ -24,43 +24,6 @@ static cl::opt<bool>
>  FixGlobalBaseReg("mips-fix-global-base-reg", cl::Hidden, cl::init(true),
>                   cl::desc("Always use $gp as the global base register."));
>
> -// class MipsCallEntry.
> -MipsCallEntry::MipsCallEntry(StringRef N) : PseudoSourceValue(MipsPSV) {
> -#ifndef NDEBUG
> -  Name = N;
> -  Val = nullptr;
> -#endif
> -}
> -
> -MipsCallEntry::MipsCallEntry(const GlobalValue *V)
> -    : PseudoSourceValue(MipsPSV) {
> -#ifndef NDEBUG
> -  Val = V;
> -#endif
> -}
> -
> -bool MipsCallEntry::isConstant(const MachineFrameInfo *) const {
> -  return false;
> -}
> -
> -bool MipsCallEntry::isAliased(const MachineFrameInfo *) const {
> -  return false;
> -}
> -
> -bool MipsCallEntry::mayAlias(const MachineFrameInfo *) const {
> -  return false;
> -}
> -
> -void MipsCallEntry::printCustom(raw_ostream &O) const {
> -  O << "MipsCallEntry: ";
> -#ifndef NDEBUG
> -  if (Val)
> -    O << Val->getName();
> -  else
> -    O << Name;
> -#endif
> -}
> -
>  MipsFunctionInfo::~MipsFunctionInfo() {}
>
>  bool MipsFunctionInfo::globalBaseRegSet() const {
> @@ -117,22 +80,12 @@ bool MipsFunctionInfo::isEhDataRegFI(int
>                          || FI == EhDataRegFI[2] || FI == EhDataRegFI[3]);
>  }
>
> -MachinePointerInfo MipsFunctionInfo::callPtrInfo(StringRef Name) {
> -  std::unique_ptr<const MipsCallEntry> &E = ExternalCallEntries[Name];
> -
> -  if (!E)
> -    E = llvm::make_unique<MipsCallEntry>(Name);
> -
> -  return MachinePointerInfo(E.get());
> +MachinePointerInfo MipsFunctionInfo::callPtrInfo(const char *ES) {
> +  return
> MachinePointerInfo(MF.getPSVManager().getExternalSymbolCallEntry(ES));
>  }
>
> -MachinePointerInfo MipsFunctionInfo::callPtrInfo(const GlobalValue *Val) {
> -  std::unique_ptr<const MipsCallEntry> &E = GlobalCallEntries[Val];
> -
> -  if (!E)
> -    E = llvm::make_unique<MipsCallEntry>(Val);
> -
> -  return MachinePointerInfo(E.get());
> +MachinePointerInfo MipsFunctionInfo::callPtrInfo(const GlobalValue *GV) {
> +  return
> MachinePointerInfo(MF.getPSVManager().getGlobalValueCallEntry(GV));
>  }
>
>  int MipsFunctionInfo::getMoveF64ViaSpillFI(const TargetRegisterClass *RC)
> {
>
> Modified: llvm/trunk/lib/Target/Mips/MipsMachineFunction.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsMachineFunction.h?rev=244698&r1=244697&r2=244698&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Target/Mips/MipsMachineFunction.h (original)
> +++ llvm/trunk/lib/Target/Mips/MipsMachineFunction.h Tue Aug 11 18:23:17
> 2015
> @@ -15,12 +15,10 @@
>  #define LLVM_LIB_TARGET_MIPS_MIPSMACHINEFUNCTION_H
>
>  #include "Mips16HardFloatInfo.h"
> -#include "llvm/ADT/StringMap.h"
>  #include "llvm/CodeGen/MachineFrameInfo.h"
>  #include "llvm/CodeGen/MachineFunction.h"
>  #include "llvm/CodeGen/MachineMemOperand.h"
>  #include "llvm/CodeGen/PseudoSourceValue.h"
> -#include "llvm/IR/GlobalValue.h"
>  #include "llvm/IR/ValueMap.h"
>  #include "llvm/Target/TargetFrameLowering.h"
>  #include "llvm/Target/TargetMachine.h"
> @@ -30,24 +28,6 @@
>
>  namespace llvm {
>
> -/// \brief A class derived from PseudoSourceValue that represents a GOT
> entry
> -/// resolved by lazy-binding.
> -class MipsCallEntry : public PseudoSourceValue {
> -public:
> -  explicit MipsCallEntry(StringRef N);
> -  explicit MipsCallEntry(const GlobalValue *V);
> -  bool isConstant(const MachineFrameInfo *) const override;
> -  bool isAliased(const MachineFrameInfo *) const override;
> -  bool mayAlias(const MachineFrameInfo *) const override;
> -
> -private:
> -  void printCustom(raw_ostream &O) const override;
> -#ifndef NDEBUG
> -  std::string Name;
> -  const GlobalValue *Val;
> -#endif
> -};
> -
>  /// MipsFunctionInfo - This class is derived from MachineFunction private
>  /// Mips target-specific information for each MachineFunction.
>  class MipsFunctionInfo : public MachineFunctionInfo {
> @@ -86,13 +66,13 @@ public:
>    int getEhDataRegFI(unsigned Reg) const { return EhDataRegFI[Reg]; }
>    bool isEhDataRegFI(int FI) const;
>
> -  /// \brief Create a MachinePointerInfo that has a MipsCallEntr object
> -  /// representing a GOT entry for an external function.
> -  MachinePointerInfo callPtrInfo(StringRef Name);
> +  /// Create a MachinePointerInfo that has an
> ExternalSymbolPseudoSourceValue
> +  /// object representing a GOT entry for an external function.
> +  MachinePointerInfo callPtrInfo(const char *ES);
>
> -  /// \brief Create a MachinePointerInfo that has a MipsCallEntr object
> +  /// Create a MachinePointerInfo that has a GlobalValuePseudoSourceValue
> object
>    /// representing a GOT entry for a global function.
> -  MachinePointerInfo callPtrInfo(const GlobalValue *Val);
> +  MachinePointerInfo callPtrInfo(const GlobalValue *GV);
>
>    void setSaveS2() { SaveS2 = true; }
>    bool hasSaveS2() const { return SaveS2; }
> @@ -142,11 +122,6 @@ private:
>    /// FrameIndex for expanding BuildPairF64 nodes to spill and reload
> when the
>    /// O32 FPXX ABI is enabled. -1 is used to denote invalid index.
>    int MoveF64ViaSpillFI;
> -
> -  /// MipsCallEntry maps.
> -  StringMap<std::unique_ptr<const MipsCallEntry>> ExternalCallEntries;
> -  ValueMap<const GlobalValue *, std::unique_ptr<const MipsCallEntry>>
> -      GlobalCallEntries;
>  };
>
>  } // end of namespace llvm
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150813/dd5ed6e2/attachment-0001.html>


More information about the llvm-commits mailing list