llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
25.92k stars 10.57k forks source link

[llvm2.4-prerelease] cannot print ConstantRange to DOUT #3310

Closed edwintorok closed 15 years ago

edwintorok commented 15 years ago
Bugzilla Link 2938
Resolution WONTFIX
Resolved on Oct 23, 2008 14:18
Version unspecified
OS Linux
CC @asl

Extended Description

This code doesn't compile anymore:

ConstantRange Bounds = VR->get(V); DOUT << "Bounds: " << Bounds;

I think the problem is that DOUT is not a raw_ostream. I've commented out that code for now.

/home/edwin/llvm-svn/llvm/include/llvm/Support/Streams.h: In member function ‘llvm::BaseStream& llvm::BaseStream::operator<<(const Ty&) [with Ty = llvm::ConstantRange, StreamTy = std::basic_ostream<char, std::char_traits >]’: Solver.cpp:440: instantiated from here /home/edwin/llvm-svn/llvm/include/llvm/Support/Streams.h:57: error: no match for ‘operator<<’ in ‘((llvm::BaseStream<std::basic_ostream<char, std::char_traits > >)this)->llvm::BaseStream<std::basic_ostream<char, std::char_traits > >::Stream << Thing’ /usr/include/c++/4.3/ostream:112: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>& ()(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:121: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ios<_CharT, _Traits>& ()(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:131: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& ()(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:169: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:173: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:177: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/bits/ostream.tcc:97: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:184: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/bits/ostream.tcc:111: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:195: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:204: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:208: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:213: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:217: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:225: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/ostream:229: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(const void) [with _CharT = char, _Traits = std::char_traits] /usr/include/c++/4.3/bits/ostream.tcc:125: note: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits] /home/edwin/llvm-svn/llvm/include/llvm/Value.h:247: note: std::ostream& llvm::operator<<(std::ostream&, const llvm::Value&) /home/edwin/llvm-svn/llvm/include/llvm/Value.h:251: note: llvm::raw_ostream& llvm::operator<<(llvm::raw_ostream&, const llvm::Value&) /home/edwin/llvm-svn/llvm/include/llvm/System/Path.h:708: note: std::ostream& llvm::operator<<(std::ostream&, const llvm::sys::Path&) /home/edwin/llvm-svn/llvm/include/llvm/System/Path.h:710: note: std::ostream& llvm::operator<<(std::ostream&, const llvm::sys::PathWithStatus&) /home/edwin/llvm-svn/llvm/include/llvm/Pass.h:205: note: std::ostream& llvm::operator<<(std::ostream&, const llvm::Pass&) /home/edwin/llvm-svn/llvm/include/llvm/Type.h:457: note: std::ostream& llvm::operator<<(std::ostream&, const llvm::Type&) /home/edwin/llvm-svn/llvm/include/llvm/Type.h:458: note: llvm::raw_ostream& llvm::operator<<(llvm::raw_ostream&, const llvm::Type&) /home/edwin/llvm-svn/llvm/include/llvm/ADT/APInt.h:1386: note: llvm::raw_ostream& llvm::operator<<(llvm::raw_ostream&, const llvm::APInt&) /home/edwin/llvm-svn/llvm/include/llvm/Analysis/ScalarEvolution.h:105: note: std::ostream& llvm::operator<<(std::ostream&, const llvm::SCEV&) /home/edwin/llvm-svn/llvm/include/llvm/Support/ConstantRange.h:188: note: llvm::raw_ostream& llvm::operator<<(llvm::raw_ostream&, const llvm::ConstantRange&) Constraint.h:58: note: std::ostream& llvm::operator<<(std::ostream&, const llvm::Relation&) Constraint.h:134: note: std::ostream& llvm::operator<<(std::ostream&, const llvm::Constraint&) /home/edwin/llvm-svn/llvm/include/llvm/Analysis/AliasSetTracker.h:245: note: std::ostream& llvm::operator<<(std::ostream&, const llvm::AliasSet&) /home/edwin/llvm-svn/llvm/include/llvm/Analysis/AliasSetTracker.h:384: note: std::ostream& llvm::operator<<(std::ostream&, const llvm::AliasSetTracker&)

edwintorok commented 15 years ago

The plan is to convert everything over to raw_ostream. Sorry, we won't be adding new operator<<'s for std::ostream unless needed in mainline.

Converting DOUT from Support/Debug.h to raw_ostream is fine with me.

Can I just convert llvm:getErrorOutputStream to return errs() instead of cerr? What is the equivalent of cnoout with raw_ostream?

lattner commented 15 years ago

The plan is to convert everything over to raw_ostream. Sorry, we won't be adding new operator<<'s for std::ostream unless needed in mainline.