[PATCH] D156012: [NVPTX] Fix lack of `.noreturn` on certain functions for aliases

Joseph Huber via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 21 19:31:28 PDT 2023


jhuber6 created this revision.
jhuber6 added reviewers: tra, arsenm, jlebar, kushanam, aaron.ballman.
Herald added subscribers: mattd, gchakrabarti, asavonic, jeroen.dobbelaere, hiraditya.
Herald added a project: All.
jhuber6 requested review of this revision.
Herald added subscribers: llvm-commits, wangpc, wdng, jholewinski.
Herald added a project: LLVM.

Forgot to include this special handling on the declaration of the alias
function.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D156012

Files:
  llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
  llvm/test/CodeGen/NVPTX/alias.ll


Index: llvm/test/CodeGen/NVPTX/alias.ll
===================================================================
--- llvm/test/CodeGen/NVPTX/alias.ll
+++ llvm/test/CodeGen/NVPTX/alias.ll
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=nvptx64 -mcpu=sm_30 -mattr=+ptx63 | FileCheck %s
+; RUN: llc < %s -march=nvptx64 -mcpu=sm_30 -mattr=+ptx64 | FileCheck %s
 
 define i32 @a() { ret i32 0 }
 @b = internal alias i32 (), ptr @a
@@ -7,6 +7,13 @@
 define void @foo(i32 %0, ptr %1) { ret void }
 @bar = alias i32 (), ptr @foo
 
+define void @noreturn() #0 {
+  ret void
+}
+ at noreturn_alias = alias i32 (), ptr @noreturn
+
+attributes #0 = { noreturn }
+
 ; CHECK: .visible .func  (.param .b32 func_retval0) a()
 
 ;      CHECK: .visible .func foo(
@@ -14,6 +21,9 @@
 ; CHECK-NEXT:         .param .b64 foo_param_1
 ; CHECK-NEXT: )
 
+;      CHECK: .visible .func noreturn()
+; CHECK-NEXT: .noreturn
+
 ;      CHECK: .visible .func  (.param .b32 func_retval0) b();
 ; CHECK-NEXT: .alias b, a;
 
@@ -25,3 +35,7 @@
 ; CHECK-NEXT:         .param .b64 foo_param_1
 ; CHECK-NEXT: );
 ; CHECK-NEXT: .alias bar, foo;
+
+;      CHECK: .visible .func noreturn_alias()
+; CHECK-NEXT: .noreturn;
+; CHECK-NEXT: .alias noreturn_alias, noreturn;
Index: llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
===================================================================
--- llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
+++ llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
@@ -873,6 +873,8 @@
   printReturnValStr(F, OS);
   OS << Name->getName();
   emitFunctionParamList(F, OS);
+  if (shouldEmitPTXNoReturn(F, TM))
+    OS << "\n.noreturn";
   OS << ";\n";
 
   OS << ".alias " << Name->getName() << ", " << F->getName() << ";\n";


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D156012.543136.patch
Type: text/x-patch
Size: 1683 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230722/13d7ef1f/attachment.bin>


More information about the llvm-commits mailing list