Use only explicit bool conversion operators
authorDavid Blaikie <dblaikie@gmail.com>
Wed, 15 May 2013 07:36:59 +0000 (07:36 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Wed, 15 May 2013 07:36:59 +0000 (07:36 +0000)
commit453f4f01302f00651aae2fc7658f6e23a2beadb0
tree1454f10c61d8ed47d4f3e9f392f6c54366fca599
parent1fe14c56f11c76aa90f27da633380548a9ee71a5
Use only explicit bool conversion operators

BitVector/SmallBitVector::reference::operator bool remain implicit since
they model more exactly a bool, rather than something else that can be
boolean tested.

The most common (non-buggy) case are where such objects are used as
return expressions in bool-returning functions or as boolean function
arguments. In those cases I've used (& added if necessary) a named
function to provide the equivalent (or sometimes negative, depending on
convenient wording) test.

One behavior change (YAMLParser) was made, though no test case is
included as I'm not sure how to reach that code path. Essentially any
comparison of llvm::yaml::document_iterators would be invalid if neither
iterator was at the end.

This helped uncover a couple of bugs in Clang - test cases provided for
those in a separate commit along with similar changes to `operator bool`
instances in Clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181868 91177308-0d34-0410-b5e6-96231b3b80d8
13 files changed:
include/llvm/ADT/IntervalMap.h
include/llvm/ADT/OwningPtr.h
include/llvm/ADT/PointerUnion.h
include/llvm/Analysis/InlineCost.h
include/llvm/CodeGen/SlotIndexes.h
include/llvm/Support/CallSite.h
include/llvm/Support/YAMLParser.h
lib/Analysis/MemoryDependenceAnalysis.cpp
lib/CodeGen/RegAllocGreedy.cpp
lib/Support/SourceMgr.cpp
lib/Support/Windows/Windows.h
tools/bugpoint/Miscompilation.cpp
unittests/ExecutionEngine/MCJIT/MCJITObjectCacheTest.cpp