[llvm-branch-commits] [llvm] MIR: Serialize MachineBasicBlock::IsEHContTarget (PR #227196)

Matt Arsenault via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Sep 28 23:17:28 PDT 2026


https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/227196

Co-Authored-By: Claude Sonnet 5 <noreply at anthropic.com>

>From 418d1ff60497108767d7abbbec74035f44815199 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Tue, 29 Sep 2026 08:15:26 +0200
Subject: [PATCH] MIR: Serialize MachineBasicBlock::IsEHContTarget

Co-Authored-By: Claude Sonnet 5 <noreply at anthropic.com>
---
 llvm/lib/CodeGen/MIRParser/MILexer.cpp           |  1 +
 llvm/lib/CodeGen/MIRParser/MILexer.h             |  1 +
 llvm/lib/CodeGen/MIRParser/MIParser.cpp          |  6 ++++++
 llvm/lib/CodeGen/MachineBasicBlock.cpp           |  5 +++++
 .../machine-basic-block-ehcont-target.mir        | 16 ++++++++++++++++
 5 files changed, 29 insertions(+)
 create mode 100644 llvm/test/CodeGen/MIR/Generic/machine-basic-block-ehcont-target.mir

diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.cpp b/llvm/lib/CodeGen/MIRParser/MILexer.cpp
index d686be44b3ba7..a07047a25bb63 100644
--- a/llvm/lib/CodeGen/MIRParser/MILexer.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MILexer.cpp
@@ -281,6 +281,7 @@ static MIToken::TokenKind getIdentifierKind(StringRef Identifier) {
       .Case("ehscope-entry", MIToken::kw_ehscope_entry)
       .Case("ehfunclet-entry", MIToken::kw_ehfunclet_entry)
       .Case("cleanup-funclet-entry", MIToken::kw_cleanup_funclet_entry)
+      .Case("ehcont-target", MIToken::kw_ehcont_target)
       .Case("liveins", MIToken::kw_liveins)
       .Case("successors", MIToken::kw_successors)
       .Case("floatpred", MIToken::kw_floatpred)
diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.h b/llvm/lib/CodeGen/MIRParser/MILexer.h
index 0548cc2fe1baa..6c27eff9cd4da 100644
--- a/llvm/lib/CodeGen/MIRParser/MILexer.h
+++ b/llvm/lib/CodeGen/MIRParser/MILexer.h
@@ -135,6 +135,7 @@ struct MIToken {
     kw_ehscope_entry,
     kw_ehfunclet_entry,
     kw_cleanup_funclet_entry,
+    kw_ehcont_target,
     kw_liveins,
     kw_successors,
     kw_floatpred,
diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
index b74730689c4cf..64ee526f4119a 100644
--- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
@@ -745,6 +745,7 @@ bool MIParser::parseBasicBlockDefinition(
   bool IsEHFuncletEntry = false;
   bool IsEHScopeEntry = false;
   bool IsCleanupFuncletEntry = false;
+  bool IsEHContTarget = false;
   std::optional<MBBSectionID> SectionID;
   uint64_t Alignment = 0;
   unsigned MaxBytesForAlignment = 0;
@@ -783,6 +784,10 @@ bool MIParser::parseBasicBlockDefinition(
         IsCleanupFuncletEntry = true;
         lex();
         break;
+      case MIToken::kw_ehcont_target:
+        IsEHContTarget = true;
+        lex();
+        break;
       case MIToken::kw_align:
         if (parseAlignment(Alignment))
           return true;
@@ -848,6 +853,7 @@ bool MIParser::parseBasicBlockDefinition(
   MBB->setIsEHFuncletEntry(IsEHFuncletEntry);
   MBB->setIsEHScopeEntry(IsEHScopeEntry);
   MBB->setIsCleanupFuncletEntry(IsCleanupFuncletEntry);
+  MBB->setIsEHContTarget(IsEHContTarget);
   if (SectionID) {
     MBB->setSectionID(*SectionID);
     MF.setBBSectionsType(BasicBlockSection::List);
diff --git a/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp
index fbf79d0eb2f9c..c829411ab23c4 100644
--- a/llvm/lib/CodeGen/MachineBasicBlock.cpp
+++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp
@@ -567,6 +567,11 @@ void MachineBasicBlock::printName(raw_ostream &os, unsigned printNameFlags,
       os << "cleanup-funclet-entry";
       hasAttributes = true;
     }
+    if (isEHContTarget()) {
+      os << (hasAttributes ? ", " : " (");
+      os << "ehcont-target";
+      hasAttributes = true;
+    }
     if (getAlignment() != Align(1)) {
       os << (hasAttributes ? ", " : " (");
       os << "align " << getAlignment().value();
diff --git a/llvm/test/CodeGen/MIR/Generic/machine-basic-block-ehcont-target.mir b/llvm/test/CodeGen/MIR/Generic/machine-basic-block-ehcont-target.mir
new file mode 100644
index 0000000000000..87fa501e8830d
--- /dev/null
+++ b/llvm/test/CodeGen/MIR/Generic/machine-basic-block-ehcont-target.mir
@@ -0,0 +1,16 @@
+# RUN: llc -run-pass=none -o - %s | FileCheck %s
+
+# Test ehcont-target machine basic block attribute
+
+---
+name:            test
+body: |
+  ; CHECK: bb.0 (ehcont-target):
+  bb.0 (ehcont-target):
+...
+---
+name:            withalign
+body: |
+  ; CHECK: bb.0 (ehcont-target, align 8):
+  bb.0 (align 8, ehcont-target):
+...



More information about the llvm-branch-commits mailing list