[LLVMdev] #include <iostream>

John Criswell criswell at cs.uiuc.edu
Mon Dec 11 11:18:59 PST 2006

Bill Wendling wrote:

It seems that when compiling Debug versions of LLVM, we use stream
manipulators (like std::hex) on the new LLVM streams, and doing so
causes a compiler error when compiling LLVM with GCC 3.4.0.

I commited a fix to work around the problem, but it seems to me it would
be better if LLVM streams could support common stream manipulators.

First, has anyone else experienced the compiler error I ran into?  And
second, is there any easy way to get LLVM streams to work with standard
stream manipulators?

-- John T.

> Hi all,
> With the newest patches to LLVM, there should be no reason for having  
> "#include <iostream>" in any library source code file, except for lib/ 
> Support/Streams.cpp. Please use the following instead:
> OLD                NEW
> ---                ---
> std::ostream       llvm::OStream
> std::istream       llvm::IStream
> std::cerr          llvm::cerr
> std::cerr          llvm::cout
> std::cin           llvm::cin
> DEBUG(std::cerr    DOUT
> If you have something like this:
> 	void print(std::ostream& O);
> You can pass the LLVM streams in like this:
> 	print(*cerr.stream());
> Or you can change the print() method to take an llvm ostream:
> 	void print(llvm::OStream& O);
> 	print(cerr);
> -bw
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

More information about the llvm-dev mailing list