mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
5f6c901f02
This provides a new way to access the TargetMachine through TargetPassConfig, as a dependency. The patterns replaced here are: * Passes handling a null TargetMachine call `getAnalysisIfAvailable<TargetPassConfig>`. * Passes not handling a null TargetMachine `addRequired<TargetPassConfig>` and call `getAnalysis<TargetPassConfig>`. * MachineFunctionPasses now use MF.getTarget(). * Remove all the TargetMachine constructors. * Remove INITIALIZE_TM_PASS. This fixes a crash when running `llc -start-before prologepilog`. PEI needs StackProtector, which gets constructed without a TargetMachine by the pass manager. The StackProtector pass doesn't handle the case where there is no TargetMachine, so it segfaults. Related to PR30324. Differential Revision: https://reviews.llvm.org/D33222 llvm-svn: 303360
39 lines
1.2 KiB
C++
39 lines
1.2 KiB
C++
//===-- Mips.h - Top-level interface for Mips representation ----*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file contains the entry points for global functions defined in
|
|
// the LLVM Mips back-end.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIB_TARGET_MIPS_MIPS_H
|
|
#define LLVM_LIB_TARGET_MIPS_MIPS_H
|
|
|
|
#include "MCTargetDesc/MipsMCTargetDesc.h"
|
|
#include "llvm/Target/TargetMachine.h"
|
|
|
|
namespace llvm {
|
|
class MipsTargetMachine;
|
|
class ModulePass;
|
|
class FunctionPass;
|
|
|
|
ModulePass *createMipsOs16Pass();
|
|
ModulePass *createMips16HardFloatPass();
|
|
|
|
FunctionPass *createMipsModuleISelDagPass();
|
|
FunctionPass *createMipsOptimizePICCallPass();
|
|
FunctionPass *createMipsDelaySlotFillerPass();
|
|
FunctionPass *createMipsHazardSchedule();
|
|
FunctionPass *createMipsLongBranchPass();
|
|
FunctionPass *createMipsConstantIslandPass();
|
|
FunctionPass *createMicroMipsSizeReductionPass();
|
|
} // end namespace llvm;
|
|
|
|
#endif
|