Skip to content

Commit

Permalink
CodeGen: rename Win64 ExceptionHandling to WinEH
Browse files Browse the repository at this point in the history
This exception format is not specific to Windows x64.  A similar approach is
taken on nearly all architectures.  Generalise the name to reflect reality.
This will eventually be used for Windows on ARM data emission as well.

Switch the enum and namespace into an enum class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212000 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
compnerd committed Jun 29, 2014
1 parent 622520e commit 36c789f
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 27 deletions.
24 changes: 12 additions & 12 deletions include/llvm/MC/MCAsmInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,13 @@ enum class EncodingType {
};
}

namespace ExceptionHandling {
enum ExceptionsType { None, DwarfCFI, SjLj, ARM, Win64 };
}
enum class ExceptionHandling {
None, /// No exception support
DwarfCFI, /// DWARF-like instruction based exceptions
SjLj, /// setjmp/longjmp based exceptions
ARM, /// ARM EHABI
WinEH, /// Windows Exception Handling
};

namespace LCOMM {
enum LCOMMType { NoAlignment, ByteAlignment, Log2Alignment };
Expand Down Expand Up @@ -299,7 +303,7 @@ class MCAsmInfo {
bool SupportsDebugInformation;

/// Exception handling format for the target. Defaults to None.
ExceptionHandling::ExceptionsType ExceptionsType;
ExceptionHandling ExceptionsType;

/// Windows exception handling data (.pdata) encoding. Defaults to Invalid.
WinEH::EncodingType WinEHEncodingType;
Expand Down Expand Up @@ -472,17 +476,13 @@ class MCAsmInfo {
bool doesSupportExceptionHandling() const {
return ExceptionsType != ExceptionHandling::None;
}
ExceptionHandling::ExceptionsType getExceptionHandlingType() const {
return ExceptionsType;
}
WinEH::EncodingType getWinEHEncodingType() const {
return WinEHEncodingType;
}
ExceptionHandling getExceptionHandlingType() const { return ExceptionsType; }
WinEH::EncodingType getWinEHEncodingType() const { return WinEHEncodingType; }
bool isExceptionHandlingDwarf() const {
return (ExceptionsType == ExceptionHandling::DwarfCFI ||
ExceptionsType == ExceptionHandling::ARM ||
// Win64 handler data still uses DWARF LSDA encoding.
ExceptionsType == ExceptionHandling::Win64);
// Windows handler data still uses DWARF LSDA encoding.
ExceptionsType == ExceptionHandling::WinEH);
}
bool doesDwarfUseRelocationsAcrossSections() const {
return DwarfUsesRelocationsAcrossSections;
Expand Down
7 changes: 3 additions & 4 deletions lib/CodeGen/AsmPrinter/AsmPrinter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ bool AsmPrinter::doInitialization(Module &M) {
case ExceptionHandling::ARM:
ES = new ARMException(this);
break;
case ExceptionHandling::Win64:
case ExceptionHandling::WinEH:
ES = new Win64Exception(this);
break;
}
Expand Down Expand Up @@ -709,13 +709,12 @@ AsmPrinter::CFIMoveType AsmPrinter::needsCFIMoves() {
}

bool AsmPrinter::needsSEHMoves() {
return MAI->getExceptionHandlingType() == ExceptionHandling::Win64 &&
return MAI->getExceptionHandlingType() == ExceptionHandling::WinEH &&
MF->getFunction()->needsUnwindTableEntry();
}

void AsmPrinter::emitCFIInstruction(const MachineInstr &MI) {
ExceptionHandling::ExceptionsType ExceptionHandlingType =
MAI->getExceptionHandlingType();
ExceptionHandling ExceptionHandlingType = MAI->getExceptionHandlingType();
if (ExceptionHandlingType != ExceptionHandling::DwarfCFI &&
ExceptionHandlingType != ExceptionHandling::ARM)
return;
Expand Down
2 changes: 1 addition & 1 deletion lib/CodeGen/Passes.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ void TargetPassConfig::addPassesToHandleExceptions() {
// FALLTHROUGH
case ExceptionHandling::DwarfCFI:
case ExceptionHandling::ARM:
case ExceptionHandling::Win64:
case ExceptionHandling::WinEH:
addPass(createDwarfEHPass(TM));
break;
case ExceptionHandling::None:
Expand Down
4 changes: 2 additions & 2 deletions lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ X86MCAsmInfoMicrosoft::X86MCAsmInfoMicrosoft(const Triple &Triple) {
if (Triple.getArch() == Triple::x86_64) {
PrivateGlobalPrefix = ".L";
PointerSize = 8;
ExceptionsType = ExceptionHandling::Win64;
ExceptionsType = ExceptionHandling::WinEH;
}

AssemblerDialect = AsmWriterFlavor;
Expand All @@ -165,7 +165,7 @@ X86MCAsmInfoGNUCOFF::X86MCAsmInfoGNUCOFF(const Triple &Triple) {
if (Triple.getArch() == Triple::x86_64) {
PrivateGlobalPrefix = ".L";
PointerSize = 8;
ExceptionsType = ExceptionHandling::Win64;
ExceptionsType = ExceptionHandling::WinEH;
} else {
ExceptionsType = ExceptionHandling::DwarfCFI;
}
Expand Down
16 changes: 8 additions & 8 deletions lib/Target/X86/X86FrameLowering.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -451,12 +451,12 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF) const {
bool Is64Bit = STI.is64Bit();
bool IsLP64 = STI.isTarget64BitLP64();
bool IsWin64 = STI.isTargetWin64();
bool IsSEH =
bool IsWinEH =
MF.getTarget().getMCAsmInfo()->getExceptionHandlingType() ==
ExceptionHandling::Win64; // Not necessarily synonymous with IsWin64.
bool NeedsWin64SEH = IsSEH && Fn->needsUnwindTableEntry();
ExceptionHandling::WinEH; // Not necessarily synonymous with IsWin64.
bool NeedsWinEH = IsWinEH && Fn->needsUnwindTableEntry();
bool NeedsDwarfCFI =
!IsSEH && (MMI.hasDebugInfo() || Fn->needsUnwindTableEntry());
!IsWinEH && (MMI.hasDebugInfo() || Fn->needsUnwindTableEntry());
bool UseLEA = STI.useLeaForSP();
unsigned StackAlign = getStackAlignment();
unsigned SlotSize = RegInfo->getSlotSize();
Expand Down Expand Up @@ -572,7 +572,7 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF) const {
.addCFIIndex(CFIIndex);
}

if (NeedsWin64SEH) {
if (NeedsWinEH) {
BuildMI(MBB, MBBI, DL, TII.get(X86::SEH_PushReg))
.addImm(FramePtr)
.setMIFlag(MachineInstr::FrameSetup);
Expand Down Expand Up @@ -623,7 +623,7 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF) const {
StackOffset += stackGrowth;
}

if (NeedsWin64SEH) {
if (NeedsWinEH) {
BuildMI(MBB, MBBI, DL, TII.get(X86::SEH_PushReg)).addImm(Reg).setMIFlag(
MachineInstr::FrameSetup);
}
Expand Down Expand Up @@ -735,7 +735,7 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF) const {
}

int SEHFrameOffset = 0;
if (NeedsWin64SEH) {
if (NeedsWinEH) {
if (HasFP) {
// We need to set frame base offset low enough such that all saved
// register offsets would be positive relative to it, but we can't
Expand Down Expand Up @@ -775,7 +775,7 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF) const {
++MBBI;

// Emit SEH info for non-GPRs
if (NeedsWin64SEH) {
if (NeedsWinEH) {
for (const CalleeSavedInfo &Info : MFI->getCalleeSavedInfo()) {
unsigned Reg = Info.getReg();
if (X86::GR64RegClass.contains(Reg) || X86::GR32RegClass.contains(Reg))
Expand Down

0 comments on commit 36c789f

Please sign in to comment.