mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-21 18:24:23 +00:00
Fix a bug in bitstream writer handling abbrevs, add value symtab
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36373 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -147,12 +147,8 @@ public:
|
|||||||
EmitVBR(CodeLen, bitc::CodeLenWidth);
|
EmitVBR(CodeLen, bitc::CodeLenWidth);
|
||||||
FlushToWord();
|
FlushToWord();
|
||||||
BlockScope.push_back(Block(CurCodeSize, Out.size()/4));
|
BlockScope.push_back(Block(CurCodeSize, Out.size()/4));
|
||||||
|
|
||||||
// Delete all abbrevs.
|
|
||||||
for (unsigned i = 0, e = CurAbbrevs.size(); i != e; ++i)
|
|
||||||
delete CurAbbrevs[i];
|
|
||||||
|
|
||||||
BlockScope.back().PrevAbbrevs.swap(CurAbbrevs);
|
BlockScope.back().PrevAbbrevs.swap(CurAbbrevs);
|
||||||
|
|
||||||
// Emit a placeholder, which will be replaced when the block is popped.
|
// Emit a placeholder, which will be replaced when the block is popped.
|
||||||
Emit(0, bitc::BlockSizeWidth);
|
Emit(0, bitc::BlockSizeWidth);
|
||||||
|
|
||||||
@ -161,6 +157,11 @@ public:
|
|||||||
|
|
||||||
void ExitBlock() {
|
void ExitBlock() {
|
||||||
assert(!BlockScope.empty() && "Block scope imbalance!");
|
assert(!BlockScope.empty() && "Block scope imbalance!");
|
||||||
|
|
||||||
|
// Delete all abbrevs.
|
||||||
|
for (unsigned i = 0, e = CurAbbrevs.size(); i != e; ++i)
|
||||||
|
delete CurAbbrevs[i];
|
||||||
|
|
||||||
const Block &B = BlockScope.back();
|
const Block &B = BlockScope.back();
|
||||||
|
|
||||||
// Block tail:
|
// Block tail:
|
||||||
|
@ -33,7 +33,7 @@ namespace bitc {
|
|||||||
GLOBALCONSTANTS_BLOCK_ID = 3,
|
GLOBALCONSTANTS_BLOCK_ID = 3,
|
||||||
FUNCTION_BLOCK_ID = 4,
|
FUNCTION_BLOCK_ID = 4,
|
||||||
TYPE_SYMTAB_BLOCK_ID = 5,
|
TYPE_SYMTAB_BLOCK_ID = 5,
|
||||||
GLOBAL_SYMTAB_BLOCK_ID = 6
|
VALUE_SYMTAB_BLOCK_ID = 6
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -81,6 +81,11 @@ namespace bitc {
|
|||||||
TST_ENTRY_CODE = 1 // TST_ENTRY: [typeid, namelen, namechar x N]
|
TST_ENTRY_CODE = 1 // TST_ENTRY: [typeid, namelen, namechar x N]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// The value symbol table only has one code (VST_ENTRY_CODE).
|
||||||
|
enum ValueSymtabCodes {
|
||||||
|
VST_ENTRY_CODE = 1 // VST_ENTRY: [valid, namelen, namechar x N]
|
||||||
|
};
|
||||||
|
|
||||||
} // End bitc namespace
|
} // End bitc namespace
|
||||||
} // End llvm namespace
|
} // End llvm namespace
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user