Skip to content

Commit df14dbd

Browse files
authored
[DirectX] Fix build breaks (#128556)
1. Fix build break caused by #126772 by adding `writeDISubrangeType` stub to `DXILBitcodeWriter.cpp` 2. Fix build break caused by #128480 by adding implementation of pure virtual method `TargetSubtargetInfo::getRegisterInfo`
1 parent a018788 commit df14dbd

File tree

5 files changed

+39
-1
lines changed

5 files changed

+39
-1
lines changed

llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,10 @@ class DXILBitcodeWriter {
243243
}
244244
void writeDIDerivedType(const DIDerivedType *N,
245245
SmallVectorImpl<uint64_t> &Record, unsigned Abbrev);
246+
void writeDISubrangeType(const DISubrangeType *N,
247+
SmallVectorImpl<uint64_t> &Record, unsigned Abbrev) {
248+
llvm_unreachable("DXIL cannot contain DISubrangeType Nodes");
249+
}
246250
void writeDICompositeType(const DICompositeType *N,
247251
SmallVectorImpl<uint64_t> &Record, unsigned Abbrev);
248252
void writeDISubroutineType(const DISubroutineType *N,

llvm/lib/Target/DirectX/DirectXInstrInfo.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121

2222
namespace llvm {
2323
struct DirectXInstrInfo : public DirectXGenInstrInfo {
24+
const DirectXRegisterInfo RI;
2425
explicit DirectXInstrInfo() : DirectXGenInstrInfo() {}
25-
26+
const DirectXRegisterInfo &getRegisterInfo() const { return RI; }
2627
~DirectXInstrInfo() override;
2728
};
2829
} // namespace llvm

llvm/lib/Target/DirectX/DirectXRegisterInfo.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,24 @@
2222
using namespace llvm;
2323

2424
DirectXRegisterInfo::~DirectXRegisterInfo() {}
25+
26+
const MCPhysReg *
27+
DirectXRegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const {
28+
return nullptr;
29+
}
30+
BitVector
31+
DirectXRegisterInfo::getReservedRegs(const MachineFunction &MF) const {
32+
return BitVector(getNumRegs());
33+
}
34+
35+
bool DirectXRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
36+
int SPAdj, unsigned FIOperandNum,
37+
RegScavenger *RS) const {
38+
return false;
39+
}
40+
41+
// Debug information queries.
42+
Register
43+
DirectXRegisterInfo::getFrameRegister(const MachineFunction &MF) const {
44+
return Register();
45+
}

llvm/lib/Target/DirectX/DirectXRegisterInfo.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ namespace llvm {
2222
struct DirectXRegisterInfo : public DirectXGenRegisterInfo {
2323
DirectXRegisterInfo() : DirectXGenRegisterInfo(0) {}
2424
~DirectXRegisterInfo();
25+
26+
const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override;
27+
BitVector getReservedRegs(const MachineFunction &MF) const override;
28+
bool eliminateFrameIndex(MachineBasicBlock::iterator II, int SPAdj,
29+
unsigned FIOperandNum,
30+
RegScavenger *RS = nullptr) const override;
31+
// Debug information queries.
32+
Register getFrameRegister(const MachineFunction &MF) const override;
2533
};
2634
} // namespace llvm
2735

llvm/lib/Target/DirectX/DirectXSubtarget.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ class DirectXSubtarget : public DirectXGenSubtargetInfo {
4949
const DirectXFrameLowering *getFrameLowering() const override { return &FL; }
5050

5151
const DirectXInstrInfo *getInstrInfo() const override { return &InstrInfo; }
52+
53+
const DirectXRegisterInfo *getRegisterInfo() const override {
54+
return &InstrInfo.getRegisterInfo();
55+
}
5256
};
5357

5458
} // end namespace llvm

0 commit comments

Comments
 (0)