зеркало из https://github.com/microsoft/clang-1.git
57 строки
1.7 KiB
C++
57 строки
1.7 KiB
C++
//===-- CGException.h - Classes for exceptions IR generation ----*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// These classes support the generation of LLVM IR for exceptions in
|
|
// C++ and Objective C.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef CLANG_CODEGEN_CGEXCEPTION_H
|
|
#define CLANG_CODEGEN_CGEXCEPTION_H
|
|
|
|
#include "llvm/ADT/StringRef.h"
|
|
|
|
namespace clang {
|
|
class LangOptions;
|
|
|
|
namespace CodeGen {
|
|
|
|
/// The exceptions personality for a function. When
|
|
class EHPersonality {
|
|
llvm::StringRef PersonalityFn;
|
|
|
|
// If this is non-null, this personality requires a non-standard
|
|
// function for rethrowing an exception after a catchall cleanup.
|
|
// This function must have prototype void(void*).
|
|
llvm::StringRef CatchallRethrowFn;
|
|
|
|
EHPersonality(llvm::StringRef PersonalityFn,
|
|
llvm::StringRef CatchallRethrowFn = llvm::StringRef())
|
|
: PersonalityFn(PersonalityFn),
|
|
CatchallRethrowFn(CatchallRethrowFn) {}
|
|
|
|
public:
|
|
static const EHPersonality &get(const LangOptions &Lang);
|
|
static const EHPersonality GNU_C;
|
|
static const EHPersonality GNU_C_SJLJ;
|
|
static const EHPersonality GNU_ObjC;
|
|
static const EHPersonality GNU_ObjCXX;
|
|
static const EHPersonality NeXT_ObjC;
|
|
static const EHPersonality GNU_CPlusPlus;
|
|
static const EHPersonality GNU_CPlusPlus_SJLJ;
|
|
|
|
llvm::StringRef getPersonalityFnName() const { return PersonalityFn; }
|
|
llvm::StringRef getCatchallRethrowFnName() const { return CatchallRethrowFn; }
|
|
};
|
|
|
|
}
|
|
}
|
|
|
|
#endif
|