diff options
Diffstat (limited to 'llvm/lib/Bitcode')
| -rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 15 | ||||
| -rw-r--r-- | llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 9 | 
2 files changed, 15 insertions, 9 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 93b07fc0db30..8d5a2555f9af 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -69,7 +69,6 @@  #include "llvm/Support/Error.h"  #include "llvm/Support/ErrorHandling.h"  #include "llvm/Support/ErrorOr.h" -#include "llvm/Support/ManagedStatic.h"  #include "llvm/Support/MathExtras.h"  #include "llvm/Support/MemoryBuffer.h"  #include "llvm/Support/raw_ostream.h" @@ -1243,6 +1242,8 @@ static AtomicRMWInst::BinOp getDecodedRMWOperation(unsigned Val) {    case bitc::RMW_UMIN: return AtomicRMWInst::UMin;    case bitc::RMW_FADD: return AtomicRMWInst::FAdd;    case bitc::RMW_FSUB: return AtomicRMWInst::FSub; +  case bitc::RMW_FMAX: return AtomicRMWInst::FMax; +  case bitc::RMW_FMIN: return AtomicRMWInst::FMin;    }  } @@ -1384,6 +1385,9 @@ static bool isConstExprSupported(uint8_t Opcode) {    if (Opcode >= BitcodeConstant::FirstSpecialOpcode)      return true; +  if (Instruction::isBinaryOp(Opcode)) +    return ConstantExpr::isSupportedBinOp(Opcode); +    return !ExpandConstantExprs;  } @@ -1851,6 +1855,8 @@ static Attribute::AttrKind getAttrFromCode(uint64_t Code) {      return Attribute::DisableSanitizerInstrumentation;    case bitc::ATTR_KIND_ELEMENTTYPE:      return Attribute::ElementType; +  case bitc::ATTR_KIND_FNRETTHUNK_EXTERN: +    return Attribute::FnRetThunkExtern;    case bitc::ATTR_KIND_INACCESSIBLEMEM_ONLY:      return Attribute::InaccessibleMemOnly;    case bitc::ATTR_KIND_INACCESSIBLEMEM_OR_ARGMEMONLY: @@ -3672,7 +3678,7 @@ GlobalValue::SanitizerMetadata deserializeSanitizerMetadata(unsigned V) {    if (V & (1 << 1))      Meta.NoHWAddress = true;    if (V & (1 << 2)) -    Meta.NoMemtag = true; +    Meta.Memtag = true;    if (V & (1 << 3))      Meta.IsDynInit = true;    return Meta; @@ -7441,10 +7447,9 @@ class BitcodeErrorCategoryType : public std::error_category {  } // end anonymous namespace -static ManagedStatic<BitcodeErrorCategoryType> ErrorCategory; -  const std::error_category &llvm::BitcodeErrorCategory() { -  return *ErrorCategory; +  static BitcodeErrorCategoryType ErrorCategory; +  return ErrorCategory;  }  static Expected<StringRef> readBlobInRecord(BitstreamCursor &Stream, diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index 941ed808bab1..590562ce2796 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -577,6 +577,8 @@ static unsigned getEncodedRMWOperation(AtomicRMWInst::BinOp Op) {    case AtomicRMWInst::UMin: return bitc::RMW_UMIN;    case AtomicRMWInst::FAdd: return bitc::RMW_FADD;    case AtomicRMWInst::FSub: return bitc::RMW_FSUB; +  case AtomicRMWInst::FMax: return bitc::RMW_FMAX; +  case AtomicRMWInst::FMin: return bitc::RMW_FMIN;    }  } @@ -632,6 +634,8 @@ static uint64_t getAttrKindEncoding(Attribute::AttrKind Kind) {      return bitc::ATTR_KIND_COLD;    case Attribute::DisableSanitizerInstrumentation:      return bitc::ATTR_KIND_DISABLE_SANITIZER_INSTRUMENTATION; +  case Attribute::FnRetThunkExtern: +    return bitc::ATTR_KIND_FNRETTHUNK_EXTERN;    case Attribute::Hot:      return bitc::ATTR_KIND_HOT;    case Attribute::ElementType: @@ -1230,7 +1234,7 @@ static_assert(sizeof(GlobalValue::SanitizerMetadata) <= sizeof(unsigned),  static unsigned  serializeSanitizerMetadata(const GlobalValue::SanitizerMetadata &Meta) {    return Meta.NoAddress | (Meta.NoHWAddress << 1) | -         (Meta.NoMemtag << 2) | (Meta.IsDynInit << 3); +         (Meta.Memtag << 2) | (Meta.IsDynInit << 3);  }  /// Emit top-level description of module, including target triple, inline asm, @@ -2674,9 +2678,6 @@ void ModuleBitcodeWriter::writeConstants(unsigned FirstVal, unsigned LastVal,          Record.push_back(VE.getValueID(C->getOperand(1)));          Record.push_back(CE->getPredicate());          break; -      case Instruction::InsertValue: -        report_fatal_error("insertvalue constexprs not supported"); -        break;        }      } else if (const BlockAddress *BA = dyn_cast<BlockAddress>(C)) {        Code = bitc::CST_CODE_BLOCKADDRESS;  | 
