diff --git a/llvm/test/Transforms/FunctionSpecialization/no-spec-unused-arg.ll b/llvm/test/Transforms/FunctionSpecialization/no-spec-unused-arg.ll new file mode 100644 --- /dev/null +++ b/llvm/test/Transforms/FunctionSpecialization/no-spec-unused-arg.ll @@ -0,0 +1,20 @@ +; RUN: opt -S --passes=function-specialization -force-function-specialization -function-specialization-for-literal-constant < %s | FileCheck %s +define internal i32 @f(i32 %x, i32 %y) noinline { + ret i32 %x +} + +define i32 @g0() { + %r = call i32 @f(i32 1, i32 1) + ret i32 %r +} + +define i32 @g1() { + %r = call i32 @f(i32 1, i32 2) + ret i32 %r +} + +; Check that there are no specialisation of `f`: first parameter is deduced +; to be a constant without the need for function specialisation and +; the second parameter is unused. + +; CHECK-NOT: @f. \ No newline at end of file