LLVM API Documentation
00001 //===-- Win64Exception.h - Windows Exception Handling ----------*- C++ -*--===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file is distributed under the University of Illinois Open Source 00006 // License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This file contains support for writing windows exception info into asm files. 00011 // 00012 //===----------------------------------------------------------------------===// 00013 00014 #ifndef LLVM_LIB_CODEGEN_ASMPRINTER_WIN64EXCEPTION_H 00015 #define LLVM_LIB_CODEGEN_ASMPRINTER_WIN64EXCEPTION_H 00016 00017 #include "EHStreamer.h" 00018 00019 namespace llvm { 00020 class MachineFunction; 00021 00022 class Win64Exception : public EHStreamer { 00023 /// Per-function flag to indicate if personality info should be emitted. 00024 bool shouldEmitPersonality; 00025 00026 /// Per-function flag to indicate if the LSDA should be emitted. 00027 bool shouldEmitLSDA; 00028 00029 /// Per-function flag to indicate if frame moves info should be emitted. 00030 bool shouldEmitMoves; 00031 00032 public: 00033 //===--------------------------------------------------------------------===// 00034 // Main entry points. 00035 // 00036 Win64Exception(AsmPrinter *A); 00037 virtual ~Win64Exception(); 00038 00039 /// Emit all exception information that should come after the content. 00040 void endModule() override; 00041 00042 /// Gather pre-function exception information. Assumes being emitted 00043 /// immediately after the function entry point. 00044 void beginFunction(const MachineFunction *MF) override; 00045 00046 /// Gather and emit post-function exception information. 00047 void endFunction(const MachineFunction *) override; 00048 }; 00049 } 00050 00051 #endif 00052