If we're emitting additional CIEs due to personality functions

don't emit the default one. Explicitly check for the NULL
CIE later.

llvm-svn: 80146
This commit is contained in:
Eric Christopher 2009-08-26 21:30:49 +00:00
parent c2645717ca
commit a258c62ea1
2 changed files with 8 additions and 3 deletions

View File

@ -203,7 +203,7 @@ void DwarfException::EmitFDE(const FunctionEHFrameInfo &EHFrameInfo) {
// If there is a personality and landing pads then point to the language // If there is a personality and landing pads then point to the language
// specific data area in the exception table. // specific data area in the exception table.
if (EHFrameInfo.PersonalityIndex) { if (MMI->getPersonalities()[0] != NULL) {
Asm->EmitULEB128Bytes(4); Asm->EmitULEB128Bytes(4);
Asm->EOL("Augmentation size"); Asm->EOL("Augmentation size");

View File

@ -44,7 +44,7 @@ MachineModuleInfo::MachineModuleInfo()
, CallsUnwindInit(0) , CallsUnwindInit(0)
, DbgInfoAvailable(false) , DbgInfoAvailable(false)
{ {
// Always emit "no personality" info // Always emit some info, by default "no personality" info.
Personalities.push_back(NULL); Personalities.push_back(NULL);
} }
MachineModuleInfo::~MachineModuleInfo() { MachineModuleInfo::~MachineModuleInfo() {
@ -148,7 +148,12 @@ void MachineModuleInfo::addPersonality(MachineBasicBlock *LandingPad,
if (Personalities[i] == Personality) if (Personalities[i] == Personality)
return; return;
Personalities.push_back(Personality); // If this is the first personality we're adding go
// ahead and add it at the beginning.
if (Personalities[0] == NULL)
Personalities[0] = Personality;
else
Personalities.push_back(Personality);
} }
/// addCatchTypeInfo - Provide the catch typeinfo for a landing pad. /// addCatchTypeInfo - Provide the catch typeinfo for a landing pad.