Fix the underlying problem that was causing read(0) to be called: sometimes the
authorChris Lattner <sabre@nondot.org>
Sat, 9 Feb 2013 07:07:29 +0000 (07:07 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 9 Feb 2013 07:07:29 +0000 (07:07 +0000)
commit6c29cb3b7a233e7ddd5e48b348078eb2af91473a
tree0d7e8e001ededd1c7cc9d6ab707be3e62258172e
parent1420fda82f7de7ffcab19daf746376811d34430a
Fix the underlying problem that was causing read(0) to be called: sometimes the
bitcode writer would generate abbrev records saying that the abbrev should be
filled with fixed zero-bit bitfields (this happens in the .bc writer when
the number of types used in a module is exactly one, since log2(1) == 0).

In this case, just handle it as a literal zero.  We can't "just fix" the writer
without breaking compatibility with existing bc files, so have the abbrev reader
do the substitution.

Strengthen the assert in read to reject reads of zero bits so we catch such
crimes in the future, and remove the special case designed to handle this.

llvm-svn: 174801
llvm/include/llvm/Bitcode/BitstreamReader.h
llvm/lib/Bitcode/Reader/BitstreamReader.cpp