[Bitcode] Address backwards compat bug in r342631
authorVedant Kumar <vsk@apple.com>
Thu, 20 Sep 2018 18:59:33 +0000 (18:59 +0000)
committerVedant Kumar <vsk@apple.com>
Thu, 20 Sep 2018 18:59:33 +0000 (18:59 +0000)
commit386ad01c7b6d83beb95267116af295471e36d426
tree8f3bbf44fccf2a9aa4fe9e3591834c69aeedd77e
parentcc06a782baa9fcabc5e10b42e23e06d6018cc429
[Bitcode] Address backwards compat bug in r342631

r342631 expanded bitc::METADATA_LOCATION by one element. The bitcode
metadata loader was changed in a backwards-incompatible way, leading to
crashes when disassembling old bitcode:

  assertion: empty() && "PlaceholderQueue hasn't been flushed before being destroyed"
  Assertion failed: (empty() && "PlaceholderQueue hasn't been flushed before being destroyed")

This commit teaches the metadata loader to assume that the newly-added
IsImplicitCode bit is 'false' when not present in old bitcode. I've added a
bitcode compat regression test.

rdar://44645820

llvm-svn: 342678
llvm/lib/Bitcode/Reader/MetadataLoader.cpp
llvm/test/Bitcode/Inputs/apple-clang-700-O3-g-1.bc [new file with mode: 0644]
llvm/test/Bitcode/apple-clang-700-compat.test [new file with mode: 0644]