mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-18 11:24:01 +00:00
Beginning of the Great Exception Handling Rewrite.
* Add a "landing pad" attribute to the BasicBlock. * Modify the bitcode reader and writer to handle said attribute. Later: The verifier will ensure that the landing pad attribute is used in the appropriate manner. I.e., not applied to the entry block, and applied only to basic blocks that are branched to via a `dispatch' instruction. (This is a work-in-progress.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129235 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -714,7 +714,8 @@ bool BitcodeReader::ParseValueSymbolTable() {
|
||||
|
||||
// Read a record.
|
||||
Record.clear();
|
||||
switch (Stream.ReadRecord(Code, Record)) {
|
||||
unsigned VSTCode = Stream.ReadRecord(Code, Record);
|
||||
switch (VSTCode) {
|
||||
default: // Default behavior: unknown type.
|
||||
break;
|
||||
case bitc::VST_CODE_ENTRY: { // VST_ENTRY: [valueid, namechar x N]
|
||||
@ -729,13 +730,17 @@ bool BitcodeReader::ParseValueSymbolTable() {
|
||||
ValueName.clear();
|
||||
break;
|
||||
}
|
||||
case bitc::VST_CODE_BBENTRY: {
|
||||
case bitc::VST_CODE_BBENTRY:
|
||||
case bitc::VST_CODE_LPADENTRY: {
|
||||
if (ConvertToString(Record, 1, ValueName))
|
||||
return Error("Invalid VST_BBENTRY record");
|
||||
BasicBlock *BB = getBasicBlock(Record[0]);
|
||||
if (BB == 0)
|
||||
return Error("Invalid BB ID in VST_BBENTRY record");
|
||||
|
||||
if (VSTCode == bitc::VST_CODE_LPADENTRY)
|
||||
BB->setIsLandingPad(true);
|
||||
|
||||
BB->setName(StringRef(ValueName.data(), ValueName.size()));
|
||||
ValueName.clear();
|
||||
break;
|
||||
|
Reference in New Issue
Block a user