[clang] [compiler-rt] [llvm] [AIX] Implement the ifunc attribute. (PR #153049)
Sean Fertile via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 8 11:14:52 PST 2026
================
@@ -0,0 +1,65 @@
+; This testcase is for testing the negative return values of the
+; TOCRestoreNeededForCallToImplementation query.
+
+; RUN: llc < %s -mtriple=powerpc64-ibm-aix-xcoff -test-ifunc-warn-noerror -filetype=obj -o /dev/null 2>&1 | FileCheck %s
+
+; CHECK: TOC register save/restore needed for ifunc "foo_extern"
+; CHECK: TOC register save/restore needed for ifunc "foo_decl"
+; CHECK: TOC register save/restore needed for ifunc "foo_weak_hidden"
+; CHECK: TOC register save/restore needed for ifunc "foo_weak_protected"
+; CHECK: TOC register save/restore needed for ifunc "foo_weak_extern"
+
+ at foo_extern = ifunc i32 (...), ptr @resolve_extern
+ at foo_decl = ifunc i32 (...), ptr @resolve_decl
+ at foo_weak_hidden = ifunc i32 (...), ptr @resolve_weak_hidden
+ at foo_weak_protected = ifunc i32 (...), ptr @resolve_weak_protected
+ at foo_weak_extern = ifunc i32 (...), ptr @resolve_weak_extern
+
+define i32 @bar_extern() {
+entry:
+ ret i32 5
+}
+define internal nonnull ptr @resolve_extern() {
+entry:
+ ret ptr @bar_extern
+}
+
+declare i32 @bar_decl()
+define internal nonnull ptr @resolve_decl() {
+entry:
+ ret ptr @bar_decl
+}
+
+define weak hidden i32 @bar_weak_hidden() {
+entry:
+ ret i32 2
+}
+define internal nonnull ptr @resolve_weak_hidden() {
+entry:
+ ret ptr @bar_weak_hidden
+}
+
+define weak protected i32 @bar_weak_protected() {
+entry:
+ ret i32 3
+}
+define internal nonnull ptr @resolve_weak_protected() {
+entry:
+ ret ptr @bar_weak_protected
+}
+
+define weak i32 @bar_weak_extern() {
+entry:
+ ret i32 5
+}
+define internal nonnull ptr @resolve_weak_extern() {
+entry:
+ ret ptr @bar_weak_extern
+}
+
+!llvm.module.flags = !{!0, !1, !2}
----------------
mandlebug wrote:
minor nit: we can remove the module flags from the tests.
https://github.com/llvm/llvm-project/pull/153049
More information about the cfe-commits
mailing list