llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-hexagon Author: Matt Arsenault (arsenm) <details> <summary>Changes</summary> Keep createDataLayout around but mark it as deprecated. Eventually the ABIName field will move out of MCTargetOptions, which can change the datalayout. Co-authored-by: Claude (Claude-Opus-4.8) <noreply@<!-- -->anthropic.com> --- Full diff: https://github.com/llvm/llvm-project/pull/226407.diff 4 Files Affected: - (modified) llvm/include/llvm/Target/TargetMachine.h (+6-40) - (modified) llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp (+1-2) - (modified) llvm/lib/CodeGen/MachineFunction.cpp (-10) - (modified) llvm/lib/Target/TargetMachine.cpp (+11-7) ``````````diff diff --git a/llvm/include/llvm/Target/TargetMachine.h b/llvm/include/llvm/Target/TargetMachine.h index 7c52c72cc400e..45754ebaa19d9 100644 --- a/llvm/include/llvm/Target/TargetMachine.h +++ b/llvm/include/llvm/Target/TargetMachine.h @@ -83,21 +83,12 @@ struct MachineFunctionInfo; /// class LLVM_ABI TargetMachine { protected: // Can only create subclasses. - TargetMachine(const Target &T, StringRef DataLayoutString, - const Triple &TargetTriple, StringRef CPU, StringRef FS, - const TargetOptions &Options); + TargetMachine(const Target &T, const Triple &TargetTriple, StringRef CPU, + StringRef FS, const TargetOptions &Options); /// The Target that this machine was created for. const Target &TheTarget; - /// DataLayout for the target: keep ABI type size and alignment. - /// - /// The DataLayout is created based on the string representation provided - /// during construction. It is kept here only to avoid reparsing the string - /// but should not really be used during compilation, because it has an - /// internal cache that is context specific. - const DataLayout DL; - /// Triple string, CPU name, and target feature strings the TargetMachine /// instance is created with. Triple TargetTriple; @@ -215,35 +206,10 @@ class LLVM_ABI TargetMachine { } /// Create a DataLayout. - const DataLayout createDataLayout() const { return DL; } - - /// Test if a DataLayout if compatible with the CodeGen for this target. - /// - /// The LLVM Module owns a DataLayout that is used for the target independent - /// optimizations and code generation. This hook provides a target specific - /// check on the validity of this DataLayout. - bool isCompatibleDataLayout(const DataLayout &Candidate) const { - return DL == Candidate; - } - - /// Get the pointer size for this target. - /// - /// This is the only time the DataLayout in the TargetMachine is used. - unsigned getPointerSize(unsigned AS) const { - return DL.getPointerSize(AS); - } - - unsigned getPointerSizeInBits(unsigned AS) const { - return DL.getPointerSizeInBits(AS); - } - - unsigned getProgramPointerSize() const { - return DL.getPointerSize(DL.getProgramAddressSpace()); - } - - unsigned getAllocaPointerSize() const { - return DL.getPointerSize(DL.getAllocaAddrSpace()); - } + LLVM_DEPRECATED("Use the Module's DataLayout, or compute one with " + "Triple::computeDataLayout", + "") + DataLayout createDataLayout() const; /// Return target specific asm information. const MCAsmInfo &getMCAsmInfo() const { return *AsmInfo; } diff --git a/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp b/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp index 0f6b627935e3b..f0d9f7be794f6 100644 --- a/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp +++ b/llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp @@ -94,8 +94,7 @@ CodeGenTargetMachineImpl::CodeGenTargetMachineImpl( const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOptLevel OL) - : TargetMachine(T, TT.computeDataLayout(Options.MCOptions.getABIName()), TT, - CPU, FS, Options) { + : TargetMachine(T, TT, CPU, FS, Options) { this->RM = RM; this->CMModel = CM; this->OptLevel = OL; diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp index 282cce8667deb..415786315962b 100644 --- a/llvm/lib/CodeGen/MachineFunction.cpp +++ b/llvm/lib/CodeGen/MachineFunction.cpp @@ -63,7 +63,6 @@ #include "llvm/Support/Compiler.h" #include "llvm/Support/DOTGraphTraits.h" #include "llvm/Support/ErrorHandling.h" -#include "llvm/Support/FormatVariadic.h" #include "llvm/Support/GraphWriter.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Target/TargetMachine.h" @@ -246,15 +245,6 @@ void MachineFunction::init() { WinEHInfo = new (Allocator) WinEHFuncInfo(); } - if (!Target.isCompatibleDataLayout(getDataLayout())) { - report_fatal_error( - formatv("Can't create a MachineFunction using a Module with a " - "Target-incompatible DataLayout attached\n Target " - "DataLayout: {0}\n Module DataLayout: {1}\n", - Target.createDataLayout().getStringRepresentation(), - getDataLayout().getStringRepresentation())); - } - PSVManager = std::make_unique<PseudoSourceValueManager>(getTarget()); } diff --git a/llvm/lib/Target/TargetMachine.cpp b/llvm/lib/Target/TargetMachine.cpp index abf3afcc6969b..f203d89de6fa4 100644 --- a/llvm/lib/Target/TargetMachine.cpp +++ b/llvm/lib/Target/TargetMachine.cpp @@ -37,16 +37,20 @@ cl::opt<bool> llvm::NoKernelInfoEndLTO( // TargetMachine Class // -TargetMachine::TargetMachine(const Target &T, StringRef DataLayoutString, - const Triple &TT, StringRef CPU, StringRef FS, - const TargetOptions &Options) - : TheTarget(T), DL(DataLayoutString), TargetTriple(TT), - TargetCPU(std::string(CPU)), TargetFS(std::string(FS)), AsmInfo(nullptr), - MRI(nullptr), MII(nullptr), STI(nullptr), RequireStructuredCFG(false), - O0WantsFastISel(false), Options(Options) {} +TargetMachine::TargetMachine(const Target &T, const Triple &TT, StringRef CPU, + StringRef FS, const TargetOptions &Options) + : TheTarget(T), TargetTriple(TT), TargetCPU(std::string(CPU)), + TargetFS(std::string(FS)), AsmInfo(nullptr), MRI(nullptr), MII(nullptr), + STI(nullptr), RequireStructuredCFG(false), O0WantsFastISel(false), + Options(Options) {} TargetMachine::~TargetMachine() = default; +DataLayout TargetMachine::createDataLayout() const { + return DataLayout( + TargetTriple.computeDataLayout(Options.MCOptions.getABIName())); +} + Expected<std::unique_ptr<MCStreamer>> TargetMachine::createMCStreamer(raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, `````````` </details> https://github.com/llvm/llvm-project/pull/226407 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
