mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 02:33:06 +01:00
ed35b7a19d
Summary: This patch extends the TargetMachine to let targets specify the integer size used by the sjljehprepare pass. This is 64bit for the VE target and otherwise defaults to 32bit for all targets, which was hard-wired before. Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D71337
60 lines
2.0 KiB
C++
60 lines
2.0 KiB
C++
//===-- VETargetMachine.h - Define TargetMachine for VE ---------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file declares the VE specific subclass of TargetMachine.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIB_TARGET_VE_VETARGETMACHINE_H
|
|
#define LLVM_LIB_TARGET_VE_VETARGETMACHINE_H
|
|
|
|
#include "VEInstrInfo.h"
|
|
#include "VESubtarget.h"
|
|
#include "llvm/Target/TargetMachine.h"
|
|
|
|
namespace llvm {
|
|
|
|
class VETargetMachine : public LLVMTargetMachine {
|
|
std::unique_ptr<TargetLoweringObjectFile> TLOF;
|
|
VESubtarget Subtarget;
|
|
// Hold Strings that can be free'd all together with VETargetMachine
|
|
// e.g.: "GCC_except_tableXX" string.
|
|
std::list<std::string> StrList;
|
|
|
|
public:
|
|
VETargetMachine(const Target &T, const Triple &TT, StringRef CPU,
|
|
StringRef FS, const TargetOptions &Options,
|
|
Optional<Reloc::Model> RM, Optional<CodeModel::Model> CM,
|
|
CodeGenOpt::Level OL, bool JIT);
|
|
~VETargetMachine() override;
|
|
|
|
const VESubtarget *getSubtargetImpl() const { return &Subtarget; }
|
|
const VESubtarget *getSubtargetImpl(const Function &) const override {
|
|
return &Subtarget;
|
|
}
|
|
std::list<std::string> *getStrList() const {
|
|
return const_cast<std::list<std::string> *>(&StrList);
|
|
}
|
|
|
|
// Pass Pipeline Configuration
|
|
TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
|
|
TargetLoweringObjectFile *getObjFileLowering() const override {
|
|
return TLOF.get();
|
|
}
|
|
|
|
bool isMachineVerifierClean() const override { return false; }
|
|
|
|
TargetTransformInfo getTargetTransformInfo(const Function &F) override;
|
|
|
|
unsigned getSjLjDataSize() const override { return 64; }
|
|
};
|
|
|
|
} // namespace llvm
|
|
|
|
#endif
|