summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2017-10-14 22:16:26 +0000
committerKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2017-10-14 22:16:26 +0000
commit8c18f5b3d410b9e1faef3154c6d42796454292d1 (patch)
treefc1c07b826e6b7764ef1e7698e0a68374a5029fd /llvm/lib/Target
parentb37d05c9c14c1b9f05f295f538c408b21c4ac235 (diff)
downloadbcm5719-llvm-8c18f5b3d410b9e1faef3154c6d42796454292d1.tar.gz
bcm5719-llvm-8c18f5b3d410b9e1faef3154c6d42796454292d1.zip
AMDGPU: Don't use TargetStreamer if it has not been initialized
Fixes cfe/trunk/test/Misc/backend-resource-limit-diagnostics.cl test after r315808 We may hit few other similar issues, but I want to discuss good solution offline. llvm-svn: 315830
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp24
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h2
2 files changed, 16 insertions, 10 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
index b3650b4ac89..1adede07ed1 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
@@ -107,8 +107,10 @@ const MCSubtargetInfo* AMDGPUAsmPrinter::getSTI() const {
return TM.getMCSubtargetInfo();
}
-AMDGPUTargetStreamer& AMDGPUAsmPrinter::getTargetStreamer() const {
- return static_cast<AMDGPUTargetStreamer&>(*OutStreamer->getTargetStreamer());
+AMDGPUTargetStreamer* AMDGPUAsmPrinter::getTargetStreamer() const {
+ if (!OutStreamer)
+ return nullptr;
+ return static_cast<AMDGPUTargetStreamer*>(OutStreamer->getTargetStreamer());
}
void AMDGPUAsmPrinter::EmitStartOfAsmFile(Module &M) {
@@ -131,11 +133,11 @@ void AMDGPUAsmPrinter::EmitStartOfAsmFile(Module &M) {
// HSA emits NT_AMDGPU_HSA_CODE_OBJECT_VERSION for code objects v2.
if (TM.getTargetTriple().getOS() == Triple::AMDHSA)
- getTargetStreamer().EmitDirectiveHSACodeObjectVersion(2, 1);
+ getTargetStreamer()->EmitDirectiveHSACodeObjectVersion(2, 1);
// HSA and PAL emit NT_AMDGPU_HSA_ISA for code objects v2.
IsaInfo::IsaVersion ISA = IsaInfo::getIsaVersion(getSTI()->getFeatureBits());
- getTargetStreamer().EmitDirectiveHSACodeObjectISA(
+ getTargetStreamer()->EmitDirectiveHSACodeObjectISA(
ISA.Major, ISA.Minor, ISA.Stepping, "AMD", "AMDGPU");
}
@@ -143,16 +145,20 @@ void AMDGPUAsmPrinter::EmitEndOfAsmFile(Module &M) {
if (TM.getTargetTriple().getArch() != Triple::amdgcn)
return;
+ // Following code requires TargetStreamer to be present.
+ if (!getTargetStreamer())
+ return;
+
// Emit ISA Version (NT_AMD_AMDGPU_ISA).
std::string ISAVersionString;
raw_string_ostream ISAVersionStream(ISAVersionString);
IsaInfo::streamIsaVersion(getSTI(), ISAVersionStream);
- getTargetStreamer().EmitISAVersion(ISAVersionStream.str());
+ getTargetStreamer()->EmitISAVersion(ISAVersionStream.str());
// Emit HSA Metadata (NT_AMD_AMDGPU_HSA_METADATA).
if (TM.getTargetTriple().getOS() == Triple::AMDHSA) {
HSAMetadataStream.end();
- getTargetStreamer().EmitHSAMetadata(HSAMetadataStream.getHSAMetadata());
+ getTargetStreamer()->EmitHSAMetadata(HSAMetadataStream.getHSAMetadata());
}
// Emit PAL Metadata (NT_AMD_AMDGPU_PAL_METADATA).
@@ -164,7 +170,7 @@ void AMDGPUAsmPrinter::EmitEndOfAsmFile(Module &M) {
PALMetadataVector.push_back(i.first);
PALMetadataVector.push_back(i.second);
}
- getTargetStreamer().EmitPALMetadata(PALMetadataVector);
+ getTargetStreamer()->EmitPALMetadata(PALMetadataVector);
}
}
@@ -193,7 +199,7 @@ void AMDGPUAsmPrinter::EmitFunctionBodyStart() {
getAmdKernelCode(KernelCode, CurrentProgramInfo, *MF);
OutStreamer->SwitchSection(getObjFileLowering().getTextSection());
- getTargetStreamer().EmitAMDKernelCodeT(KernelCode);
+ getTargetStreamer()->EmitAMDKernelCodeT(KernelCode);
}
if (TM.getTargetTriple().getOS() != Triple::AMDHSA)
@@ -210,7 +216,7 @@ void AMDGPUAsmPrinter::EmitFunctionEntryLabel() {
if (MFI->isEntryFunction() && STM.isAmdCodeObjectV2(*MF)) {
SmallString<128> SymbolName;
getNameWithPrefix(SymbolName, MF->getFunction()),
- getTargetStreamer().EmitAMDGPUSymbolType(
+ getTargetStreamer()->EmitAMDGPUSymbolType(
SymbolName, ELF::STT_AMDGPU_HSA_KERNEL);
}
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h
index 74e38455058..45b81818467 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.h
@@ -155,7 +155,7 @@ public:
const MCSubtargetInfo* getSTI() const;
- AMDGPUTargetStreamer& getTargetStreamer() const;
+ AMDGPUTargetStreamer* getTargetStreamer() const;
bool doFinalization(Module &M) override;
bool runOnMachineFunction(MachineFunction &MF) override;
OpenPOWER on IntegriCloud