Stoorx updated this revision to Diff 515707.
Stoorx added a comment.

Rebase & upload with context


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D148799/new/

https://reviews.llvm.org/D148799

Files:
  clang/include/clang/Basic/TargetInfo.h
  clang/lib/Basic/Targets/AArch64.cpp
  clang/lib/Basic/Targets/AArch64.h
  clang/lib/Basic/Targets/AMDGPU.h
  clang/lib/Basic/Targets/ARC.h
  clang/lib/Basic/Targets/ARM.cpp
  clang/lib/Basic/Targets/ARM.h
  clang/lib/Basic/Targets/AVR.h
  clang/lib/Basic/Targets/BPF.h
  clang/lib/Basic/Targets/CSKY.h
  clang/lib/Basic/Targets/DirectX.h
  clang/lib/Basic/Targets/Hexagon.h
  clang/lib/Basic/Targets/Lanai.h
  clang/lib/Basic/Targets/Le64.h
  clang/lib/Basic/Targets/LoongArch.h
  clang/lib/Basic/Targets/M68k.cpp
  clang/lib/Basic/Targets/M68k.h
  clang/lib/Basic/Targets/MSP430.h
  clang/lib/Basic/Targets/Mips.h
  clang/lib/Basic/Targets/NVPTX.h
  clang/lib/Basic/Targets/PNaCl.h
  clang/lib/Basic/Targets/PPC.h
  clang/lib/Basic/Targets/RISCV.h
  clang/lib/Basic/Targets/SPIR.h
  clang/lib/Basic/Targets/Sparc.h
  clang/lib/Basic/Targets/SystemZ.h
  clang/lib/Basic/Targets/TCE.h
  clang/lib/Basic/Targets/VE.h
  clang/lib/Basic/Targets/WebAssembly.h
  clang/lib/Basic/Targets/X86.h
  clang/lib/Basic/Targets/XCore.h
  clang/lib/CodeGen/CGBuiltin.cpp
  clang/lib/CodeGen/CGStmt.cpp

Index: clang/lib/CodeGen/CGStmt.cpp
===================================================================
--- clang/lib/CodeGen/CGStmt.cpp
+++ clang/lib/CodeGen/CGStmt.cpp
@@ -2779,7 +2779,8 @@
          "unwind clobber can't be used with asm goto");
 
   // Add machine specific clobbers
-  std::string MachineClobbers = getTarget().getClobbers();
+  std::string MachineClobbers =
+      static_cast<std::string>(getTarget().getClobbers());
   if (!MachineClobbers.empty()) {
     if (!Constraints.empty())
       Constraints += ',';
Index: clang/lib/CodeGen/CGBuiltin.cpp
===================================================================
--- clang/lib/CodeGen/CGBuiltin.cpp
+++ clang/lib/CodeGen/CGBuiltin.cpp
@@ -939,7 +939,8 @@
 
   // Build the constraints. FIXME: We should support immediates when possible.
   std::string Constraints = "={@ccc},r,r,~{cc},~{memory}";
-  std::string MachineClobbers = CGF.getTarget().getClobbers();
+  std::string MachineClobbers =
+      static_cast<std::string>(CGF.getTarget().getClobbers());
   if (!MachineClobbers.empty()) {
     Constraints += ',';
     Constraints += MachineClobbers;
@@ -1082,7 +1083,8 @@
   AsmOS << "$0, ${1:y}";
 
   std::string Constraints = "=r,*Z,~{memory}";
-  std::string MachineClobbers = CGF.getTarget().getClobbers();
+  std::string MachineClobbers =
+      static_cast<std::string>(CGF.getTarget().getClobbers());
   if (!MachineClobbers.empty()) {
     Constraints += ',';
     Constraints += MachineClobbers;
Index: clang/lib/Basic/Targets/XCore.h
===================================================================
--- clang/lib/Basic/Targets/XCore.h
+++ clang/lib/Basic/Targets/XCore.h
@@ -49,7 +49,9 @@
     return TargetInfo::VoidPtrBuiltinVaList;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   ArrayRef<const char *> getGCCRegNames() const override {
     static const char *const GCCRegNames[] = {
Index: clang/lib/Basic/Targets/X86.h
===================================================================
--- clang/lib/Basic/Targets/X86.h
+++ clang/lib/Basic/Targets/X86.h
@@ -262,8 +262,8 @@
                                    StringRef Constraint, unsigned Size) const;
 
   std::string convertConstraint(const char *&Constraint) const override;
-  const char *getClobbers() const override {
-    return "~{dirflag},~{fpsr},~{flags}";
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("~{dirflag},~{fpsr},~{flags}");
   }
 
   StringRef getConstraintRegister(StringRef Constraint,
Index: clang/lib/Basic/Targets/WebAssembly.h
===================================================================
--- clang/lib/Basic/Targets/WebAssembly.h
+++ clang/lib/Basic/Targets/WebAssembly.h
@@ -130,7 +130,7 @@
     return false;
   }
 
-  const char *getClobbers() const final { return ""; }
+  const StringRef getClobbers() const final { return llvm::StringLiteral(""); }
 
   bool isCLZForZeroUndef() const final { return false; }
 
Index: clang/lib/Basic/Targets/VE.h
===================================================================
--- clang/lib/Basic/Targets/VE.h
+++ clang/lib/Basic/Targets/VE.h
@@ -69,7 +69,9 @@
     }
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   ArrayRef<const char *> getGCCRegNames() const override {
     static const char *const GCCRegNames[] = {
Index: clang/lib/Basic/Targets/TCE.h
===================================================================
--- clang/lib/Basic/Targets/TCE.h
+++ clang/lib/Basic/Targets/TCE.h
@@ -99,7 +99,9 @@
     return std::nullopt;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   BuiltinVaListKind getBuiltinVaListKind() const override {
     return TargetInfo::VoidPtrBuiltinVaList;
Index: clang/lib/Basic/Targets/SystemZ.h
===================================================================
--- clang/lib/Basic/Targets/SystemZ.h
+++ clang/lib/Basic/Targets/SystemZ.h
@@ -106,9 +106,9 @@
     return TargetInfo::convertConstraint(Constraint);
   }
 
-  const char *getClobbers() const override {
+  const StringRef getClobbers() const override {
     // FIXME: Is this really right?
-    return "";
+    return llvm::StringLiteral("");
   }
 
   BuiltinVaListKind getBuiltinVaListKind() const override {
Index: clang/lib/Basic/Targets/Sparc.h
===================================================================
--- clang/lib/Basic/Targets/Sparc.h
+++ clang/lib/Basic/Targets/Sparc.h
@@ -77,9 +77,9 @@
     }
     return false;
   }
-  const char *getClobbers() const override {
+  const StringRef getClobbers() const override {
     // FIXME: Implement!
-    return "";
+    return llvm::StringLiteral("");
   }
 
   // No Sparc V7 for now, the backend doesn't support it anyway.
Index: clang/lib/Basic/Targets/SPIR.h
===================================================================
--- clang/lib/Basic/Targets/SPIR.h
+++ clang/lib/Basic/Targets/SPIR.h
@@ -164,7 +164,9 @@
     return std::nullopt;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   ArrayRef<const char *> getGCCRegNames() const override {
     return std::nullopt;
Index: clang/lib/Basic/Targets/RISCV.h
===================================================================
--- clang/lib/Basic/Targets/RISCV.h
+++ clang/lib/Basic/Targets/RISCV.h
@@ -60,7 +60,9 @@
     return TargetInfo::VoidPtrBuiltinVaList;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   StringRef getConstraintRegister(StringRef Constraint,
                                   StringRef Expression) const override {
Index: clang/lib/Basic/Targets/PPC.h
===================================================================
--- clang/lib/Basic/Targets/PPC.h
+++ clang/lib/Basic/Targets/PPC.h
@@ -330,7 +330,9 @@
     return R;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
   int getEHDataRegisterNumber(unsigned RegNo) const override {
     if (RegNo == 0)
       return 3;
Index: clang/lib/Basic/Targets/PNaCl.h
===================================================================
--- clang/lib/Basic/Targets/PNaCl.h
+++ clang/lib/Basic/Targets/PNaCl.h
@@ -69,7 +69,9 @@
     return false;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   bool hasBitIntType() const override { return true; }
 };
Index: clang/lib/Basic/Targets/NVPTX.h
===================================================================
--- clang/lib/Basic/Targets/NVPTX.h
+++ clang/lib/Basic/Targets/NVPTX.h
@@ -109,9 +109,9 @@
     }
   }
 
-  const char *getClobbers() const override {
+  const StringRef getClobbers() const override {
     // FIXME: Is this really right?
-    return "";
+    return llvm::StringLiteral("");
   }
 
   BuiltinVaListKind getBuiltinVaListKind() const override {
Index: clang/lib/Basic/Targets/Mips.h
===================================================================
--- clang/lib/Basic/Targets/Mips.h
+++ clang/lib/Basic/Targets/Mips.h
@@ -278,7 +278,7 @@
     return TargetInfo::convertConstraint(Constraint);
   }
 
-  const char *getClobbers() const override {
+  const StringRef getClobbers() const override {
     // In GCC, $1 is not widely used in generated code (it's used only in a few
     // specific situations), so there is no real need for users to add it to
     // the clobbers list if they want to use it in their inline assembly code.
@@ -300,7 +300,7 @@
     // FIXME: We should automatically clobber $1 only for inline assembly code
     // which actually uses it. This would allow LLVM to use $1 for inline
     // assembly operands if the user's assembly code doesn't use it.
-    return "~{$1}";
+    return llvm::StringLiteral("~{$1}");
   }
 
   bool handleTargetFeatures(std::vector<std::string> &Features,
Index: clang/lib/Basic/Targets/MSP430.h
===================================================================
--- clang/lib/Basic/Targets/MSP430.h
+++ clang/lib/Basic/Targets/MSP430.h
@@ -87,9 +87,9 @@
     return false;
   }
 
-  const char *getClobbers() const override {
+  const StringRef getClobbers() const override {
     // FIXME: Is this really right?
-    return "";
+    return llvm::StringLiteral("");
   }
 
   BuiltinVaListKind getBuiltinVaListKind() const override {
Index: clang/lib/Basic/Targets/M68k.h
===================================================================
--- clang/lib/Basic/Targets/M68k.h
+++ clang/lib/Basic/Targets/M68k.h
@@ -49,7 +49,7 @@
   bool validateAsmConstraint(const char *&Name,
                              TargetInfo::ConstraintInfo &info) const override;
   std::optional<std::string> handleAsmEscapedChar(char EscChar) const override;
-  const char *getClobbers() const override;
+  const StringRef getClobbers() const override;
   BuiltinVaListKind getBuiltinVaListKind() const override;
   bool setCPU(const std::string &Name) override;
 };
Index: clang/lib/Basic/Targets/M68k.cpp
===================================================================
--- clang/lib/Basic/Targets/M68k.cpp
+++ clang/lib/Basic/Targets/M68k.cpp
@@ -236,9 +236,9 @@
   return std::string(1, *Constraint);
 }
 
-const char *M68kTargetInfo::getClobbers() const {
+const StringRef M68kTargetInfo::getClobbers() const {
   // FIXME: Is this really right?
-  return "";
+  return llvm::StringLiteral("");
 }
 
 TargetInfo::BuiltinVaListKind M68kTargetInfo::getBuiltinVaListKind() const {
Index: clang/lib/Basic/Targets/LoongArch.h
===================================================================
--- clang/lib/Basic/Targets/LoongArch.h
+++ clang/lib/Basic/Targets/LoongArch.h
@@ -51,7 +51,9 @@
     return TargetInfo::VoidPtrBuiltinVaList;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   ArrayRef<const char *> getGCCRegNames() const override;
 
Index: clang/lib/Basic/Targets/Le64.h
===================================================================
--- clang/lib/Basic/Targets/Le64.h
+++ clang/lib/Basic/Targets/Le64.h
@@ -41,7 +41,9 @@
     return TargetInfo::PNaClABIBuiltinVaList;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   ArrayRef<const char *> getGCCRegNames() const override {
     return std::nullopt;
Index: clang/lib/Basic/Targets/Lanai.h
===================================================================
--- clang/lib/Basic/Targets/Lanai.h
+++ clang/lib/Basic/Targets/Lanai.h
@@ -87,7 +87,9 @@
     return false;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   bool hasBitIntType() const override { return true; }
 };
Index: clang/lib/Basic/Targets/Hexagon.h
===================================================================
--- clang/lib/Basic/Targets/Hexagon.h
+++ clang/lib/Basic/Targets/Hexagon.h
@@ -112,7 +112,9 @@
 
   ArrayRef<TargetInfo::GCCRegAlias> getGCCRegAliases() const override;
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   static const char *getHexagonCPUSuffix(StringRef Name);
 
Index: clang/lib/Basic/Targets/DirectX.h
===================================================================
--- clang/lib/Basic/Targets/DirectX.h
+++ clang/lib/Basic/Targets/DirectX.h
@@ -77,7 +77,9 @@
     return std::nullopt;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   ArrayRef<const char *> getGCCRegNames() const override {
     return std::nullopt;
Index: clang/lib/Basic/Targets/CSKY.h
===================================================================
--- clang/lib/Basic/Targets/CSKY.h
+++ clang/lib/Basic/Targets/CSKY.h
@@ -82,7 +82,9 @@
   bool validateAsmConstraint(const char *&Name,
                              TargetInfo::ConstraintInfo &info) const override;
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   void getTargetDefines(const LangOptions &Opts,
                         MacroBuilder &Builder) const override;
Index: clang/lib/Basic/Targets/BPF.h
===================================================================
--- clang/lib/Basic/Targets/BPF.h
+++ clang/lib/Basic/Targets/BPF.h
@@ -60,7 +60,9 @@
 
   ArrayRef<Builtin::Info> getTargetBuiltins() const override;
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   BuiltinVaListKind getBuiltinVaListKind() const override {
     return TargetInfo::VoidPtrBuiltinVaList;
Index: clang/lib/Basic/Targets/AVR.h
===================================================================
--- clang/lib/Basic/Targets/AVR.h
+++ clang/lib/Basic/Targets/AVR.h
@@ -69,7 +69,9 @@
     return TargetInfo::VoidPtrBuiltinVaList;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   ArrayRef<const char *> getGCCRegNames() const override {
     static const char *const GCCRegNames[] = {
Index: clang/lib/Basic/Targets/ARM.h
===================================================================
--- clang/lib/Basic/Targets/ARM.h
+++ clang/lib/Basic/Targets/ARM.h
@@ -181,7 +181,7 @@
   bool
   validateConstraintModifier(StringRef Constraint, char Modifier, unsigned Size,
                              std::string &SuggestedModifier) const override;
-  const char *getClobbers() const override;
+  const StringRef getClobbers() const override;
 
   StringRef getConstraintRegister(StringRef Constraint,
                                   StringRef Expression) const override {
Index: clang/lib/Basic/Targets/ARM.cpp
===================================================================
--- clang/lib/Basic/Targets/ARM.cpp
+++ clang/lib/Basic/Targets/ARM.cpp
@@ -1244,9 +1244,9 @@
 
   return true;
 }
-const char *ARMTargetInfo::getClobbers() const {
+const StringRef ARMTargetInfo::getClobbers() const {
   // FIXME: Is this really right?
-  return "";
+  return llvm::StringLiteral("");
 }
 
 TargetInfo::CallingConvCheckResult
Index: clang/lib/Basic/Targets/ARC.h
===================================================================
--- clang/lib/Basic/Targets/ARC.h
+++ clang/lib/Basic/Targets/ARC.h
@@ -48,7 +48,9 @@
     return TargetInfo::VoidPtrBuiltinVaList;
   }
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   ArrayRef<const char *> getGCCRegNames() const override {
     static const char *const GCCRegNames[] = {
Index: clang/lib/Basic/Targets/AMDGPU.h
===================================================================
--- clang/lib/Basic/Targets/AMDGPU.h
+++ clang/lib/Basic/Targets/AMDGPU.h
@@ -117,7 +117,9 @@
   bool hasBFloat16Type() const override { return isAMDGCN(getTriple()); }
   const char *getBFloat16Mangling() const override { return "u6__bf16"; };
 
-  const char *getClobbers() const override { return ""; }
+  const StringRef getClobbers() const override {
+    return llvm::StringLiteral("");
+  }
 
   ArrayRef<const char *> getGCCRegNames() const override;
 
Index: clang/lib/Basic/Targets/AArch64.h
===================================================================
--- clang/lib/Basic/Targets/AArch64.h
+++ clang/lib/Basic/Targets/AArch64.h
@@ -192,7 +192,7 @@
   bool
   validateConstraintModifier(StringRef Constraint, char Modifier, unsigned Size,
                              std::string &SuggestedModifier) const override;
-  const char *getClobbers() const override;
+  const StringRef getClobbers() const override;
 
   StringRef getConstraintRegister(StringRef Constraint,
                                   StringRef Expression) const override {
Index: clang/lib/Basic/Targets/AArch64.cpp
===================================================================
--- clang/lib/Basic/Targets/AArch64.cpp
+++ clang/lib/Basic/Targets/AArch64.cpp
@@ -1295,7 +1295,9 @@
   }
 }
 
-const char *AArch64TargetInfo::getClobbers() const { return ""; }
+const StringRef AArch64TargetInfo::getClobbers() const {
+  return llvm::StringLiteral("");
+}
 
 int AArch64TargetInfo::getEHDataRegisterNumber(unsigned RegNo) const {
   if (RegNo == 0)
Index: clang/include/clang/Basic/TargetInfo.h
===================================================================
--- clang/include/clang/Basic/TargetInfo.h
+++ clang/include/clang/Basic/TargetInfo.h
@@ -1178,7 +1178,7 @@
   }
 
   /// Returns a string of target-specific clobbers, in LLVM format.
-  virtual const char *getClobbers() const = 0;
+  virtual const StringRef getClobbers() const = 0;
 
   /// Returns true if NaN encoding is IEEE 754-2008.
   /// Only MIPS allows a different encoding.
@@ -1196,9 +1196,9 @@
     return std::nullopt;
   }
 
-  const char *getDataLayoutString() const {
+  const std::string &getDataLayoutString() const {
     assert(!DataLayoutString.empty() && "Uninitialized DataLayout!");
-    return DataLayoutString.c_str();
+    return DataLayoutString;
   }
 
   struct GCCRegAlias {
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to