Bläddra i källkod

print-after-all directly prints to stderr (#3142)

Adam Yang 4 år sedan
förälder
incheckning
43975160ce
1 ändrade filer med 11 tillägg och 1 borttagningar
  1. 11 1
      lib/IR/LegacyPassManager.cpp

+ 11 - 1
lib/IR/LegacyPassManager.cpp

@@ -696,8 +696,18 @@ void PMTopLevelManager::schedulePass(Pass *P) {
 
   // HLSL Change - begin
   if (PI && !PI->isAnalysis() && this->HLSLPrintAfterAll) {
+    class direct_stderr_stream : public raw_ostream {
+      uint64_t current_pos() const override { return 0; }
+      /// See raw_ostream::write_impl.
+      void write_impl(const char *Ptr, size_t Size) override {
+        fwrite(Ptr, Size, 1, stderr);
+      }
+    };
+
+    static direct_stderr_stream stderr_stream;
+
     Pass *PP = P->createPrinterPass(
-      errs(), std::string("*** IR Dump After ") + P->getPassName() + " (" + PI->getPassArgument() + ") ***");
+      stderr_stream, std::string("*** IR Dump After ") + P->getPassName() + " (" + PI->getPassArgument() + ") ***");
     PP->assignPassManager(activeStack, getTopLevelPassManagerType());
   }
   // HLSL Change - end