From fce7f73bec461211ff5187f34d5f76facd22f753 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Thu, 9 Aug 2018 22:24:04 +0000 Subject: [MC] Move EH DWARF encodings from MC to CodeGen, NFC Summary: The TType encoding, LSDA encoding, and personality encoding are all passed explicitly by CodeGen to the assembler through .cfi_* directives, so only the AsmPrinter needs to know about them. The FDE CFI encoding however, controls the encoding of the label implicitly created by the .cfi_startproc directive. That directive seems to be special in that it doesn't take an encoding, so the assembler just has to know how to encode one DSO-local label reference from .eh_frame to .text. As a result, it looks like MC will continue to have to know when the large code model is in use. Perhaps we could invent a '.cfi_startproc [large]' flag so that this knowledge doesn't need to pollute the assembler. Reviewers: davide, lliu0, JDevlieghere Subscribers: hiraditya, fedor.sergeev, llvm-commits Differential Revision: https://reviews.llvm.org/D50533 llvm-svn: 339397 --- llvm/lib/Target/TargetLoweringObjectFile.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'llvm/lib/Target/TargetLoweringObjectFile.cpp') diff --git a/llvm/lib/Target/TargetLoweringObjectFile.cpp b/llvm/lib/Target/TargetLoweringObjectFile.cpp index 6bcf60fafc3..bb937923b47 100644 --- a/llvm/lib/Target/TargetLoweringObjectFile.cpp +++ b/llvm/lib/Target/TargetLoweringObjectFile.cpp @@ -45,6 +45,9 @@ void TargetLoweringObjectFile::Initialize(MCContext &ctx, Mang = new Mangler(); InitMCObjectFileInfo(TM.getTargetTriple(), TM.isPositionIndependent(), *Ctx, TM.getCodeModel() == CodeModel::Large); + + // Reset various EH DWARF encodings. + PersonalityEncoding = LSDAEncoding = TTypeEncoding = dwarf::DW_EH_PE_absptr; } TargetLoweringObjectFile::~TargetLoweringObjectFile() { -- cgit v1.2.3