-
Notifications
You must be signed in to change notification settings - Fork 73
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge commit 'e95d304fd362e68e985c9624ce5503099f63a3ee' into HEAD
- Loading branch information
Showing
355 changed files
with
10,252 additions
and
4,379 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
//===- EHPersonalities.h - Compute EH-related information -----------------===// | ||
// | ||
// The LLVM Compiler Infrastructure | ||
// | ||
// This file is distributed under the University of Illinois Open Source | ||
// License. See LICENSE.TXT for details. | ||
// | ||
//===----------------------------------------------------------------------===// | ||
|
||
#ifndef LLVM_ANALYSIS_EHPERSONALITIES_H | ||
#define LLVM_ANALYSIS_EHPERSONALITIES_H | ||
|
||
#include "llvm/Support/ErrorHandling.h" | ||
|
||
namespace llvm { | ||
class Function; | ||
class Value; | ||
|
||
enum class EHPersonality { | ||
Unknown, | ||
GNU_Ada, | ||
GNU_C, | ||
GNU_CXX, | ||
GNU_ObjC, | ||
MSVC_X86SEH, | ||
MSVC_Win64SEH, | ||
MSVC_CXX, | ||
CoreCLR | ||
}; | ||
|
||
/// \brief See if the given exception handling personality function is one | ||
/// that we understand. If so, return a description of it; otherwise return | ||
/// Unknown. | ||
EHPersonality classifyEHPersonality(const Value *Pers); | ||
|
||
/// \brief Returns true if this personality function catches asynchronous | ||
/// exceptions. | ||
inline bool isAsynchronousEHPersonality(EHPersonality Pers) { | ||
// The two SEH personality functions can catch asynch exceptions. We assume | ||
// unknown personalities don't catch asynch exceptions. | ||
switch (Pers) { | ||
case EHPersonality::MSVC_X86SEH: | ||
case EHPersonality::MSVC_Win64SEH: | ||
return true; | ||
default: | ||
return false; | ||
} | ||
llvm_unreachable("invalid enum"); | ||
} | ||
|
||
/// \brief Returns true if this is a personality function that invokes | ||
/// handler funclets (which must return to it). | ||
inline bool isFuncletEHPersonality(EHPersonality Pers) { | ||
switch (Pers) { | ||
case EHPersonality::MSVC_CXX: | ||
case EHPersonality::MSVC_X86SEH: | ||
case EHPersonality::MSVC_Win64SEH: | ||
case EHPersonality::CoreCLR: | ||
return true; | ||
default: | ||
return false; | ||
} | ||
llvm_unreachable("invalid enum"); | ||
} | ||
|
||
/// \brief Return true if this personality may be safely removed if there | ||
/// are no invoke instructions remaining in the current function. | ||
inline bool isNoOpWithoutInvoke(EHPersonality Pers) { | ||
switch (Pers) { | ||
case EHPersonality::Unknown: | ||
return false; | ||
// All known personalities currently have this behavior | ||
default: | ||
return true; | ||
} | ||
llvm_unreachable("invalid enum"); | ||
} | ||
|
||
bool canSimplifyInvokeNoUnwind(const Function *F); | ||
|
||
} // end namespace llvm | ||
|
||
#endif |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.