summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/MachineModuleInfo.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2015-04-15 18:48:15 +0000
committerReid Kleckner <reid@kleckner.net>2015-04-15 18:48:15 +0000
commit3e9fadfbc8b6d9969ea47cce9295bfdf3212d97f (patch)
treeac17f2a0fb6548eafd6e025c2ebce2567eac7d47 /llvm/lib/CodeGen/MachineModuleInfo.cpp
parent9e7a8172a3f4f26062a9866aa874ff3b5776e49d (diff)
downloadbcm5719-llvm-3e9fadfbc8b6d9969ea47cce9295bfdf3212d97f.tar.gz
bcm5719-llvm-3e9fadfbc8b6d9969ea47cce9295bfdf3212d97f.zip
[WinEH] Try to make the MachineFunction CFG more accurate
This avoids emitting code for unreachable landingpad blocks that contain calls to llvm.eh.actions and indirectbr. It's also a first step towards unifying the SEH and WinEH lowering codepaths. I'm keeping the old fan-in lowering of SEH around until the preparation version works well enough that we can switch over without breaking existing users. llvm-svn: 235037
Diffstat (limited to 'llvm/lib/CodeGen/MachineModuleInfo.cpp')
-rw-r--r--llvm/lib/CodeGen/MachineModuleInfo.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MachineModuleInfo.cpp b/llvm/lib/CodeGen/MachineModuleInfo.cpp
index d5491213293..e8bd1f8e6d9 100644
--- a/llvm/lib/CodeGen/MachineModuleInfo.cpp
+++ b/llvm/lib/CodeGen/MachineModuleInfo.cpp
@@ -570,10 +570,13 @@ const Function *MachineModuleInfo::getPersonality() const {
}
EHPersonality MachineModuleInfo::getPersonalityType() {
- if (PersonalityTypeCache == EHPersonality::Unknown)
- PersonalityTypeCache = classifyEHPersonality(getPersonality());
+ if (PersonalityTypeCache == EHPersonality::Unknown) {
+ if (const Function *F = getPersonality())
+ PersonalityTypeCache = classifyEHPersonality(F);
+ }
return PersonalityTypeCache;
}
+
/// getPersonalityIndex - Return unique index for current personality
/// function. NULL/first personality function should always get zero index.
unsigned MachineModuleInfo::getPersonalityIndex() const {
OpenPOWER on IntegriCloud