#ifdef DEBUG_CAST_OPERATORS
-#include <iostream>
+#include "llvm/Support/Debug.h"
struct bar {
bar() {}
struct foo {
void ext() const;
/* static bool classof(const bar *X) {
- cerr << "Classof: " << X << "\n";
+ llvm_cerr << "Classof: " << X << "\n";
return true;
}*/
};
template <> inline bool isa_impl<foo,bar>(const bar &Val) {
- cerr << "Classof: " << &Val << "\n";
+ llvm_cerr << "Classof: " << &Val << "\n";
return true;
}
#ifndef LLVM_SUPPORT_DEBUG_H
#define LLVM_SUPPORT_DEBUG_H
-#include <ostream> // Doesn't have static d'tors!!
+#include "llvm/Support/Streams.h"
namespace llvm {
do { if (DebugFlag && isCurrentDebugType(DEBUG_TYPE)) { X; } } while (0)
#endif
-/// llvm_ostream - Acts like an ostream. However, it doesn't print things out if
-/// an ostream isn't specified.
-///
-class llvm_ostream {
- std::ostream* Stream;
-public:
- llvm_ostream() : Stream(0) {}
- llvm_ostream(std::ostream& OStream) : Stream(&OStream) {}
-
- template <typename Ty>
- llvm_ostream& operator << (const Ty& Thing) {
-#ifndef NDEBUG
- if (Stream) *Stream << Thing;
-#endif
- return *this;
- }
-};
-
/// getErrorOutputStream - Returns the error output stream (std::cerr). This
/// places the std::c* I/O streams into one .cpp file and relieves the whole
/// program from having to have hundreds of static c'tor/d'tors for them.
#ifndef LLVM_SUPPORT_GRAPHWRITER_H
#define LLVM_SUPPORT_GRAPHWRITER_H
+#include "llvm/Support/Debug.h"
#include "llvm/Support/DOTGraphTraits.h"
#include "llvm/ADT/GraphTraits.h"
#include "llvm/System/Path.h"
-#include <vector>
-#include <iostream>
#include <fstream>
+#include <vector>
namespace llvm {
std::string ErrMsg;
sys::Path Filename = sys::Path::GetTemporaryDirectory(&ErrMsg);
if (Filename.isEmpty()) {
- std::cerr << "Error: " << ErrMsg << "\n";
+ llvm_cerr << "Error: " << ErrMsg << "\n";
return Filename;
}
Filename.appendComponent(Name + ".dot");
if (Filename.makeUnique(true,&ErrMsg)) {
- std::cerr << "Error: " << ErrMsg << "\n";
+ llvm_cerr << "Error: " << ErrMsg << "\n";
return sys::Path();
}
- std::cerr << "Writing '" << Filename << "'... ";
+ llvm_cerr << "Writing '" << Filename << "'... ";
std::ofstream O(Filename.c_str());
// Output the end of the graph
W.writeFooter();
- std::cerr << " done. \n";
+ llvm_cerr << " done. \n";
O.close();
} else {
- std::cerr << "error opening file for writing!\n";
+ llvm_cerr << "error opening file for writing!\n";
Filename.clear();
}
#define LLVM_SUPPORT_PASS_NAME_PARSER_H
#include "llvm/Support/CommandLine.h"
+#include "llvm/Support/Debug.h"
#include "llvm/Pass.h"
#include <algorithm>
-#include <iostream>
namespace llvm {
virtual void passRegistered(const PassInfo *P) {
if (ignorablePass(P) || !Opt) return;
if (findOption(P->getPassArgument()) != getNumOptions()) {
- std::cerr << "Two passes with the same argument (-"
+ llvm_cerr << "Two passes with the same argument (-"
<< P->getPassArgument() << ") attempted to be registered!\n";
abort();
}