gallivm: fix output stream flushing in error case for disassembly.
authorRoland Scheidegger <sroland@vmware.com>
Wed, 14 May 2014 01:23:09 +0000 (03:23 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Wed, 14 May 2014 14:23:33 +0000 (16:23 +0200)
When there's an error, also need to flush the stream, otherwise an assertion
is hit (meaning you don't actually see the error neither).

src/gallium/auxiliary/gallivm/lp_bld_debug.cpp

index 85953a225b967993ee53b9d13e0e8d7c9a05170d..5d6d45d61ecd0366bb1bcf076309242d1b9416a5 100644 (file)
@@ -201,6 +201,7 @@ disassemble(const void* func, llvm::raw_ostream & Out)
 
    if (!AsmInfo) {
       Out << "error: no assembly info for target " << Triple << "\n";
+      Out.flush();
       return 0;
    }
 
@@ -209,12 +210,14 @@ disassemble(const void* func, llvm::raw_ostream & Out)
    OwningPtr<const MCRegisterInfo> MRI(T->createMCRegInfo(Triple));
    if (!MRI) {
       Out << "error: no register info for target " << Triple.c_str() << "\n";
+      Out.flush();
       return 0;
    }
 
    OwningPtr<const MCInstrInfo> MII(T->createMCInstrInfo());
    if (!MII) {
       Out << "error: no instruction info for target " << Triple.c_str() << "\n";
+      Out.flush();
       return 0;
    }
 
@@ -228,6 +231,7 @@ disassemble(const void* func, llvm::raw_ostream & Out)
 #endif
    if (!DisAsm) {
       Out << "error: no disassembler for target " << Triple << "\n";
+      Out.flush();
       return 0;
    }
 
@@ -236,6 +240,7 @@ disassemble(const void* func, llvm::raw_ostream & Out)
          T->createMCInstPrinter(AsmPrinterVariant, *AsmInfo, *MII, *MRI, *STI));
    if (!Printer) {
       Out << "error: no instruction printer for target " << Triple.c_str() << "\n";
+      Out.flush();
       return 0;
    }