Changeset View
Changeset View
Standalone View
Standalone View
tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp
Show First 20 Lines • Show All 168 Lines • ▼ Show 20 Lines | default: return nullptr; | ||||
STRINGIFY_CODE(MODULE_CODE, GLOBALVAR) | STRINGIFY_CODE(MODULE_CODE, GLOBALVAR) | ||||
STRINGIFY_CODE(MODULE_CODE, FUNCTION) | STRINGIFY_CODE(MODULE_CODE, FUNCTION) | ||||
STRINGIFY_CODE(MODULE_CODE, ALIAS) | STRINGIFY_CODE(MODULE_CODE, ALIAS) | ||||
STRINGIFY_CODE(MODULE_CODE, PURGEVALS) | STRINGIFY_CODE(MODULE_CODE, PURGEVALS) | ||||
STRINGIFY_CODE(MODULE_CODE, GCNAME) | STRINGIFY_CODE(MODULE_CODE, GCNAME) | ||||
STRINGIFY_CODE(MODULE_CODE, VSTOFFSET) | STRINGIFY_CODE(MODULE_CODE, VSTOFFSET) | ||||
STRINGIFY_CODE(MODULE_CODE, METADATA_VALUES) | STRINGIFY_CODE(MODULE_CODE, METADATA_VALUES) | ||||
STRINGIFY_CODE(MODULE_CODE, SOURCE_FILENAME) | STRINGIFY_CODE(MODULE_CODE, SOURCE_FILENAME) | ||||
STRINGIFY_CODE(MODULE_CODE, HASH) | |||||
} | } | ||||
case bitc::IDENTIFICATION_BLOCK_ID: | case bitc::IDENTIFICATION_BLOCK_ID: | ||||
switch (CodeID) { | switch (CodeID) { | ||||
default: | default: | ||||
return nullptr; | return nullptr; | ||||
STRINGIFY_CODE(IDENTIFICATION_CODE, STRING) | STRINGIFY_CODE(IDENTIFICATION_CODE, STRING) | ||||
STRINGIFY_CODE(IDENTIFICATION_CODE, EPOCH) | STRINGIFY_CODE(IDENTIFICATION_CODE, EPOCH) | ||||
} | } | ||||
▲ Show 20 Lines • Show All 341 Lines • ▼ Show 20 Lines | if (DumpRecords) { | ||||
Abbv = Stream.getAbbrev(Entry.ID); | Abbv = Stream.getAbbrev(Entry.ID); | ||||
outs() << " abbrevid=" << Entry.ID; | outs() << " abbrevid=" << Entry.ID; | ||||
} | } | ||||
for (unsigned i = 0, e = Record.size(); i != e; ++i) | for (unsigned i = 0, e = Record.size(); i != e; ++i) | ||||
outs() << " op" << i << "=" << (int64_t)Record[i]; | outs() << " op" << i << "=" << (int64_t)Record[i]; | ||||
outs() << "/>"; | outs() << "/>"; | ||||
tejohnson: Is the MODULE_CODE_HASH ever expected outside a module block? If not, can the first part of the… | |||||
Not Done ReplyInline ActionsI think the code a reused across Blocks, so you need to know that you are in a module block to interpret the code as being the hash. Did I misunderstand your point? mehdi_amini: I think the code a reused across Blocks, so you need to know that you are in a module block to… | |||||
Not Done ReplyInline ActionsOk, got it, checking both does make sense. tejohnson: Ok, got it, checking both does make sense. | |||||
if (Abbv) { | if (Abbv) { | ||||
for (unsigned i = 1, e = Abbv->getNumOperandInfos(); i != e; ++i) { | for (unsigned i = 1, e = Abbv->getNumOperandInfos(); i != e; ++i) { | ||||
const BitCodeAbbrevOp &Op = Abbv->getOperandInfo(i); | const BitCodeAbbrevOp &Op = Abbv->getOperandInfo(i); | ||||
if (!Op.isEncoding() || Op.getEncoding() != BitCodeAbbrevOp::Array) | if (!Op.isEncoding() || Op.getEncoding() != BitCodeAbbrevOp::Array) | ||||
continue; | continue; | ||||
assert(i + 2 == e && "Array op not second to last"); | assert(i + 2 == e && "Array op not second to last"); | ||||
std::string Str; | std::string Str; | ||||
bool ArrayIsPrintable = true; | bool ArrayIsPrintable = true; | ||||
▲ Show 20 Lines • Show All 276 Lines • Show Last 20 Lines |
Is the MODULE_CODE_HASH ever expected outside a module block? If not, can the first part of the if be turned into an assert inside the if body?