xref: /llvm-project/llvm/test/tools/llvm-extract/delete-ifunc.ll (revision 2544d91956f9b7b955f13dc2ffb12da30c5f7f87)
1*2544d919SChristian Ulmann; RUN: llvm-extract -func foo -S %s | FileCheck %s
2*2544d919SChristian Ulmann
3*2544d919SChristian Ulmann; llvm-extract should not copy ifuncs into the new module, so make sure they
4*2544d919SChristian Ulmann; are turned into declarations.
5*2544d919SChristian Ulmann
6*2544d919SChristian Ulmann; CHECK: define void @foo() {
7*2544d919SChristian Ulmann; CHECK: call void @ifunc()
8*2544d919SChristian Ulmanndefine void @foo() {
9*2544d919SChristian Ulmann  call void @ifunc()
10*2544d919SChristian Ulmann  ret void
11*2544d919SChristian Ulmann}
12*2544d919SChristian Ulmann
13*2544d919SChristian Ulmanndefine void @ifunc_impl() {
14*2544d919SChristian Ulmann  ret void
15*2544d919SChristian Ulmann}
16*2544d919SChristian Ulmann
17*2544d919SChristian Ulmann; CHECK: declare void @ifunc()
18*2544d919SChristian Ulmann@ifunc = ifunc void (), ptr @ifunc_resolver
19*2544d919SChristian Ulmann
20*2544d919SChristian Ulmanndefine internal ptr @ifunc_resolver() {
21*2544d919SChristian Ulmann  ret ptr @ifunc_impl
22*2544d919SChristian Ulmann}
23