mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-23 17:32:49 +00:00
be886690bd
In the case where just tables are part of the function section, this produces more readable assembly by avoiding switching to the eh section and back to .text. This would also break with non unique section names, as trying to switch to a unique section actually creates a new one. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231677 91177308-0d34-0410-b5e6-96231b3b80d8
88 lines
2.7 KiB
C++
88 lines
2.7 KiB
C++
//===-- DwarfException.h - Dwarf Exception Framework -----------*- C++ -*--===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file contains support for writing dwarf exception info into asm files.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_LIB_CODEGEN_ASMPRINTER_DWARFEXCEPTION_H
|
|
#define LLVM_LIB_CODEGEN_ASMPRINTER_DWARFEXCEPTION_H
|
|
|
|
#include "EHStreamer.h"
|
|
#include "llvm/CodeGen/AsmPrinter.h"
|
|
|
|
namespace llvm {
|
|
class MachineFunction;
|
|
class ARMTargetStreamer;
|
|
|
|
class DwarfCFIExceptionBase : public EHStreamer {
|
|
protected:
|
|
DwarfCFIExceptionBase(AsmPrinter *A);
|
|
|
|
/// Per-function flag to indicate if frame CFI info should be emitted.
|
|
bool shouldEmitCFI;
|
|
|
|
void markFunctionEnd() override;
|
|
};
|
|
|
|
class DwarfCFIException : public DwarfCFIExceptionBase {
|
|
/// Per-function flag to indicate if .cfi_personality should be emitted.
|
|
bool shouldEmitPersonality;
|
|
|
|
/// Per-function flag to indicate if .cfi_lsda should be emitted.
|
|
bool shouldEmitLSDA;
|
|
|
|
/// Per-function flag to indicate if frame moves info should be emitted.
|
|
bool shouldEmitMoves;
|
|
|
|
AsmPrinter::CFIMoveType moveTypeModule;
|
|
|
|
public:
|
|
//===--------------------------------------------------------------------===//
|
|
// Main entry points.
|
|
//
|
|
DwarfCFIException(AsmPrinter *A);
|
|
virtual ~DwarfCFIException();
|
|
|
|
/// Emit all exception information that should come after the content.
|
|
void endModule() override;
|
|
|
|
/// Gather pre-function exception information. Assumes being emitted
|
|
/// immediately after the function entry point.
|
|
void beginFunction(const MachineFunction *MF) override;
|
|
|
|
/// Gather and emit post-function exception information.
|
|
void endFunction(const MachineFunction *) override;
|
|
};
|
|
|
|
class ARMException : public DwarfCFIExceptionBase {
|
|
void emitTypeInfos(unsigned TTypeEncoding) override;
|
|
ARMTargetStreamer &getTargetStreamer();
|
|
|
|
public:
|
|
//===--------------------------------------------------------------------===//
|
|
// Main entry points.
|
|
//
|
|
ARMException(AsmPrinter *A);
|
|
virtual ~ARMException();
|
|
|
|
/// Emit all exception information that should come after the content.
|
|
void endModule() override;
|
|
|
|
/// Gather pre-function exception information. Assumes being emitted
|
|
/// immediately after the function entry point.
|
|
void beginFunction(const MachineFunction *MF) override;
|
|
|
|
/// Gather and emit post-function exception information.
|
|
void endFunction(const MachineFunction *) override;
|
|
};
|
|
} // End of namespace llvm
|
|
|
|
#endif
|