You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.234
Former-commit-id: 8071ec1a8c5eaa9be24b41745add19297608001f
This commit is contained in:
parent
f32dbaf0b2
commit
212f6bafcb
55
external/llvm/lib/CodeGen/AllocationOrder.cpp
vendored
55
external/llvm/lib/CodeGen/AllocationOrder.cpp
vendored
@ -1,55 +0,0 @@
|
||||
//===-- llvm/CodeGen/AllocationOrder.cpp - Allocation Order ---------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements an allocation order for virtual registers.
|
||||
//
|
||||
// The preferred allocation order for a virtual register depends on allocation
|
||||
// hints and target hooks. The AllocationOrder class encapsulates all of that.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "AllocationOrder.h"
|
||||
#include "llvm/CodeGen/MachineFunction.h"
|
||||
#include "llvm/CodeGen/MachineRegisterInfo.h"
|
||||
#include "llvm/CodeGen/RegisterClassInfo.h"
|
||||
#include "llvm/CodeGen/VirtRegMap.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
#define DEBUG_TYPE "regalloc"
|
||||
|
||||
// Compare VirtRegMap::getRegAllocPref().
|
||||
AllocationOrder::AllocationOrder(unsigned VirtReg,
|
||||
const VirtRegMap &VRM,
|
||||
const RegisterClassInfo &RegClassInfo,
|
||||
const LiveRegMatrix *Matrix)
|
||||
: Pos(0), HardHints(false) {
|
||||
const MachineFunction &MF = VRM.getMachineFunction();
|
||||
const TargetRegisterInfo *TRI = &VRM.getTargetRegInfo();
|
||||
Order = RegClassInfo.getOrder(MF.getRegInfo().getRegClass(VirtReg));
|
||||
if (TRI->getRegAllocationHints(VirtReg, Order, Hints, MF, &VRM, Matrix))
|
||||
HardHints = true;
|
||||
rewind();
|
||||
|
||||
DEBUG({
|
||||
if (!Hints.empty()) {
|
||||
dbgs() << "hints:";
|
||||
for (unsigned I = 0, E = Hints.size(); I != E; ++I)
|
||||
dbgs() << ' ' << printReg(Hints[I], TRI);
|
||||
dbgs() << '\n';
|
||||
}
|
||||
});
|
||||
#ifndef NDEBUG
|
||||
for (unsigned I = 0, E = Hints.size(); I != E; ++I)
|
||||
assert(is_contained(Order, Hints[I]) &&
|
||||
"Target hint is outside allocation order.");
|
||||
#endif
|
||||
}
|
Reference in New Issue
Block a user