LLVM  6.0.0svn
StringsAndChecksums.cpp
Go to the documentation of this file.
1 //===- StringsAndChecksums.cpp --------------------------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
11 #include "llvm/ADT/STLExtras.h"
16 #include "llvm/Support/Error.h"
17 #include <cassert>
18 
19 using namespace llvm;
20 using namespace llvm::codeview;
21 
23 
25  const DebugStringTableSubsectionRef &Strings)
26  : Strings(&Strings) {}
27 
29  const DebugStringTableSubsectionRef &Strings,
30  const DebugChecksumsSubsectionRef &Checksums)
31  : Strings(&Strings), Checksums(&Checksums) {}
32 
33 void StringsAndChecksumsRef::initializeStrings(
34  const DebugSubsectionRecord &SR) {
36  assert(!Strings && "Found a string table even though we already have one!");
37 
38  OwnedStrings = std::make_shared<DebugStringTableSubsectionRef>();
39  consumeError(OwnedStrings->initialize(SR.getRecordData()));
40  Strings = OwnedStrings.get();
41 }
42 
44  resetStrings();
46 }
47 
49  OwnedStrings.reset();
50  Strings = nullptr;
51 }
52 
54  OwnedChecksums.reset();
55  Checksums = nullptr;
56 }
57 
59  const DebugStringTableSubsectionRef &StringsRef) {
60  OwnedStrings = std::make_shared<DebugStringTableSubsectionRef>();
61  *OwnedStrings = StringsRef;
62  Strings = OwnedStrings.get();
63 }
64 
66  const DebugChecksumsSubsectionRef &CS) {
67  OwnedChecksums = std::make_shared<DebugChecksumsSubsectionRef>();
68  *OwnedChecksums = CS;
69  Checksums = OwnedChecksums.get();
70 }
71 
72 void StringsAndChecksumsRef::initializeChecksums(
73  const DebugSubsectionRecord &FCR) {
75  if (Checksums)
76  return;
77 
78  OwnedChecksums = std::make_shared<DebugChecksumsSubsectionRef>();
79  consumeError(OwnedChecksums->initialize(FCR.getRecordData()));
80  Checksums = OwnedChecksums.get();
81 }
Compute iterated dominance frontiers using a linear time algorithm.
Definition: AllocatorList.h:24
void setChecksums(const DebugChecksumsSubsectionRef &CS)
void consumeError(Error Err)
Consume a Error without doing anything.
Definition: Error.h:962
Represents a read-only view of a CodeView string table.
void setStrings(const DebugStringTableSubsectionRef &Strings)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())