[multiversion] Implement the old pass manager's TTI wrapper pass in
[oota-llvm.git] / include / llvm / Analysis / LibCallSemantics.h
index 74e8401a1fe601b345c00ba233f7849a5735f732..e529a426ff8462d702d0dbbbe73da61b954553eb 100644 (file)
@@ -27,7 +27,7 @@ namespace llvm {
   /// standard libm functions.  The location that they may be interested in is
   /// an abstract location that represents errno for the current target.  In
   /// this case, a location for errno is anything such that the predicate
-  /// returns true.  On Mac OS/X, this predicate would return true if the
+  /// returns true.  On Mac OS X, this predicate would return true if the
   /// pointer is the result of a call to "__error()".
   ///
   /// Locations can also be defined in a constant-sensitive way.  For example,
@@ -47,7 +47,8 @@ namespace llvm {
     enum LocResult {
       Yes, No, Unknown
     };
-    LocResult (*isLocation)(CallSite CS, const Value *Ptr, unsigned Size);
+    LocResult (*isLocation)(ImmutableCallSite CS,
+                            const AliasAnalysis::Location &Loc);
   };
   
   /// LibCallFunctionInfo - Each record in the array of FunctionInfo structs
@@ -129,7 +130,7 @@ namespace llvm {
     mutable const LibCallLocationInfo *Locations;
     mutable unsigned NumLocations;
   public:
-    LibCallInfo() : Impl(0), Locations(0), NumLocations(0) {}
+    LibCallInfo() : Impl(nullptr), Locations(nullptr), NumLocations(0) {}
     virtual ~LibCallInfo();
     
     //===------------------------------------------------------------------===//
@@ -142,7 +143,7 @@ namespace llvm {
     
     /// getFunctionInfo - Return the LibCallFunctionInfo object corresponding to
     /// the specified function if we have it.  If not, return null.
-    const LibCallFunctionInfo *getFunctionInfo(Function *F) const;
+    const LibCallFunctionInfo *getFunctionInfo(const Function *F) const;
     
     
     //===------------------------------------------------------------------===//
@@ -161,6 +162,21 @@ namespace llvm {
     virtual const LibCallFunctionInfo *getFunctionInfoArray() const = 0;
   };
 
+  enum class EHPersonality {
+    Unknown,
+    GNU_Ada,
+    GNU_C,
+    GNU_CXX,
+    GNU_ObjC,
+    MSVC_Win64SEH,
+    MSVC_CXX,
+  };
+
+  /// ClassifyEHPersonality - See if the given exception handling personality
+  /// function is one that we understand.  If so, return a description of it;
+  /// otherwise return Unknown_Personality.
+  EHPersonality ClassifyEHPersonality(Value *Pers);
+
 } // end namespace llvm
 
 #endif