[llvm] [RISC-V][Mach-O] Add codegen support for Mach-O object format. (PR #178263)

Jessica Clarke via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 30 10:29:41 PST 2026


================
@@ -0,0 +1,79 @@
+; RUN: llc -mtriple=riscv32-apple-macho %s -o - -asm-verbose=false                          | FileCheck %s
+; RUN: llc -mtriple=riscv32-apple-macho %s -o - -asm-verbose=false -relocation-model=static | FileCheck %s --check-prefix=CHECK-STATIC
+
+; CHECK-LABEL: _simple:
+; CHECK-NEXT: ret
+define void @simple() nounwind {
+  ret void
+}
+
+; CHECK-LABEL: _call:
+; CHECK-NEXT: addi sp, sp, -16
+; CHECK-NEXT: sw ra, 12(sp)
+; CHECK-NEXT: call _tail_call
+; CHECK-NEXT: lw ra, 12(sp)
+; CHECK-NEXT: addi sp, sp, 16
+; CHECK-NEXT: ret
+define void @call() nounwind {
+  call void @tail_call()
+  ret void
+}
+
+; CHECK-LABEL: _tail_call:
+; CHECK-NEXT: tail _call
+define void @tail_call() nounwind {
+  tail call void @call()
+  ret void
+}
+
+; CHECK-LABEL: _direct_global:
+; CHECK-NEXT: [[AUI_BB:Lpcrel_hi.*]]:
+; CHECK-NEXT:     auipc a0, %pcrel_hi(_var)
+; CHECK-NEXT:     addi a0, a0, %pcrel_lo([[AUI_BB]])
+; CHECK-NEXT:     ret
+; CHECK-STATIC-LABEL: _direct_global:
+; CHECK-STATIC-NEXT: lui a0, %hi(_var)
+; CHECK-STATIC-NEXT: addi a0, a0, %lo(_var)
+; CHECK-STATIC-NEXT: ret
+ at var = global i32 0
+define i32* @direct_global() nounwind {
+  ret i32* @var
+}
+
+; CHECK-LABEL: _got_global:
+; CHECK-NEXT: [[AUI_BB:Lpcrel_hi.*]]:
+; CHECK-NEXT:     auipc a0, %got_pcrel_hi(_var2)
+; CHECK-NEXT:     lw a0, %pcrel_lo([[AUI_BB]])(a0)
+; CHECK-NEXT:     ret
+; No GOTs in static CodeGen.
----------------
jrtc27 wrote:

`;;` for non-lit/UTC comments

https://github.com/llvm/llvm-project/pull/178263


More information about the llvm-commits mailing list