summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2015-04-28 17:37:03 +0000
committerTom Stellard <thomas.stellard@amd.com>2015-04-28 17:37:03 +0000
commit96301d2455e658aae00d99e3ad8ca65abc92a04c (patch)
tree8664b79a568373824aba5b4d2c5c9d2306e8b1f1
parent0a0fa03d5a7b003e1ee52a563b3db40e998e12d1 (diff)
downloadbcm5719-llvm-96301d2455e658aae00d99e3ad8ca65abc92a04c.tar.gz
bcm5719-llvm-96301d2455e658aae00d99e3ad8ca65abc92a04c.zip
R600: Fix up for AsmPrinter's OutStreamer being a unique_ptr
Fixes a crash with basically any OpenGL application using the radeonsi driver. Patch by: Michel Dänzer Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90176 Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> llvm-svn: 236004
-rw-r--r--llvm/lib/Target/R600/AMDGPUMCInstLower.cpp5
-rw-r--r--llvm/test/CodeGen/R600/debug.ll10
2 files changed, 13 insertions, 2 deletions
diff --git a/llvm/lib/Target/R600/AMDGPUMCInstLower.cpp b/llvm/lib/Target/R600/AMDGPUMCInstLower.cpp
index b00bd8d9490..0aa1a9a2a2c 100644
--- a/llvm/lib/Target/R600/AMDGPUMCInstLower.cpp
+++ b/llvm/lib/Target/R600/AMDGPUMCInstLower.cpp
@@ -132,8 +132,9 @@ void AMDGPUAsmPrinter::EmitInstruction(const MachineInstr *MI) {
SmallVector<char, 16> CodeBytes;
raw_svector_ostream CodeStream(CodeBytes);
- MCObjectStreamer &ObjStreamer = (MCObjectStreamer &)OutStreamer;
- MCCodeEmitter &InstEmitter = ObjStreamer.getAssembler().getEmitter();
+ MCObjectStreamer *ObjStreamer =
+ static_cast<MCObjectStreamer *>(OutStreamer.get());
+ MCCodeEmitter &InstEmitter = ObjStreamer->getAssembler().getEmitter();
InstEmitter.EncodeInstruction(TmpInst, CodeStream, Fixups,
MF->getSubtarget<MCSubtargetInfo>());
CodeStream.flush();
diff --git a/llvm/test/CodeGen/R600/debug.ll b/llvm/test/CodeGen/R600/debug.ll
new file mode 100644
index 00000000000..a2e0e878b74
--- /dev/null
+++ b/llvm/test/CodeGen/R600/debug.ll
@@ -0,0 +1,10 @@
+; RUN: llc < %s -march=amdgcn -mcpu=verde -verify-machineinstrs -mattr=dumpcode -filetype=obj | FileCheck --check-prefix=SI --check-prefix=FUNC %s
+; RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs -mattr=dumpcode -filetype=obj | FileCheck --check-prefix=SI --check-prefix=FUNC %s
+
+; Test for a crash in the custom assembly dump code.
+
+; SI: s_endpgm
+define void @test(i32 addrspace(1)* %out) {
+ store i32 0, i32 addrspace(1)* %out
+ ret void
+}
OpenPOWER on IntegriCloud