[llvm] AsmPrinter: Emit context error for protected aliases (PR #145271)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 22 23:01:21 PDT 2025


https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/145271

>From e93873af872cc817dc95f1e02552834560e2052e Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Mon, 23 Jun 2025 14:59:07 +0900
Subject: [PATCH] AsmPrinter: Emit context error for protected aliases

---
 llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp |  9 ++++++---
 llvm/test/CodeGen/X86/equiv_with_fndef.ll  | 11 +++++++++--
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 403963f33b65c..4ae92ad05ffa7 100644
--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -1084,9 +1084,12 @@ void AsmPrinter::emitFunctionEntryLabel() {
 
   // The function label could have already been emitted if two symbols end up
   // conflicting due to asm renaming.  Detect this and emit an error.
-  if (CurrentFnSym->isVariable())
-    report_fatal_error("'" + Twine(CurrentFnSym->getName()) +
-                       "' is a protected alias");
+  if (CurrentFnSym->isVariable()) {
+    LLVMContext &Ctx = MF->getFunction().getContext();
+    Ctx.emitError("'" + Twine(CurrentFnSym->getName()) +
+                  "' is a protected alias");
+    return;
+  }
 
   OutStreamer->emitLabel(CurrentFnSym);
 
diff --git a/llvm/test/CodeGen/X86/equiv_with_fndef.ll b/llvm/test/CodeGen/X86/equiv_with_fndef.ll
index 3da0aa60250c2..e1640def9711a 100644
--- a/llvm/test/CodeGen/X86/equiv_with_fndef.ll
+++ b/llvm/test/CodeGen/X86/equiv_with_fndef.ll
@@ -1,10 +1,17 @@
-; RUN: not --crash llc < %s 2>&1 | FileCheck %s
+; RUN: not llc < %s 2> %t.err | FileCheck %s
+; RUN: FileCheck -check-prefix=ERR %s < %t.err
 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 module asm ".equiv pselect, __pselect"
 
+; ERR: error: 'pselect' is a protected alias
+
+; CHECK: .globl	pselect                         # -- Begin function pselect
+; CHECK: .type	pselect, at function
+; CHECK: .cfi_startproc # @pselect
+; CHECK: retq
+; CHECK: .size	pselect, .Lfunc_end0-pselect
 define void @pselect() {
   ret void
 }
-; CHECK: 'pselect' is a protected alias



More information about the llvm-commits mailing list