[llvm] X86: Simplify the EH_LABEL Expand condition (PR #213130)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Sat Aug 8 10:12:36 PDT 2026
https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/213130
>From a64553ca88859b96f8e2748a341a5e43d4dc9359 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Thu, 30 Jul 2026 21:29:14 +0200
Subject: [PATCH 1/2] X86: Simplify the EH_LABEL Expand condition
Re-express the opt-out handling of EH_LABEL. The special
case is 32-bit non-GNU Windows, and the net result is to skip
printing unused labels. Try to make this more comprehensible
to help figure out where this logic should really be.
I want to eliminate use of the TargetOptions::ExceptionModel,
which ideally wouldn't be needed in a TargetLowering
constructor.
Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
---
llvm/lib/Target/X86/X86ISelLowering.cpp | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 3b39e1bddb8ba..06d84f1afedba 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -570,9 +570,9 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
if (Subtarget.canUseCMPXCHG16B())
setOperationAction(ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS, MVT::i128, Custom);
- // FIXME - use subtarget debug flags
- if (!Subtarget.isTargetDarwin() && !Subtarget.isTargetELF() &&
- !Subtarget.isTargetCygMing() && !Subtarget.isTargetWin64() &&
+ // 32-bit Windows non-GNU EH (MSVC/Itanium SEH) does not use per-invoke
+ // EH labels, so expand them away. SjLj EH does use them.
+ if (Subtarget.isTargetWin32() && !Subtarget.isTargetCygMing() &&
TM.Options.ExceptionModel != ExceptionHandling::SjLj) {
setOperationAction(ISD::EH_LABEL, MVT::Other, Expand);
}
>From 3ab535da3469a18be3e25410d11265e988288b5b Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Sat, 8 Aug 2026 19:12:16 +0200
Subject: [PATCH 2/2] Address comments
---
llvm/lib/Target/X86/X86ISelLowering.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 06d84f1afedba..c74d342fed1cb 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -570,8 +570,8 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
if (Subtarget.canUseCMPXCHG16B())
setOperationAction(ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS, MVT::i128, Custom);
- // 32-bit Windows non-GNU EH (MSVC/Itanium SEH) does not use per-invoke
- // EH labels, so expand them away. SjLj EH does use them.
+ // 32-bit Windows non-GNU EH (MSVC/Itanium SEH) does not use per-invoke EH
+ // labels, so expand them away. SjLj EH does use them.
if (Subtarget.isTargetWin32() && !Subtarget.isTargetCygMing() &&
TM.Options.ExceptionModel != ExceptionHandling::SjLj) {
setOperationAction(ISD::EH_LABEL, MVT::Other, Expand);
More information about the llvm-commits
mailing list