From f3a113ff48a8b5e88455d45debbdc0bce2635b9a Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 3 Jan 2023 15:26:31 +0100 Subject: [PATCH] [TLI] Fix signature for fprintf (PR59757) fprintf() requires two pointer arguments. Fixes https://github.com/llvm/llvm-project/issues/59757. --- llvm/include/llvm/Analysis/TargetLibraryInfo.def | 2 +- llvm/test/Transforms/InstCombine/fprintf-wrong-sig.ll | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 llvm/test/Transforms/InstCombine/fprintf-wrong-sig.ll diff --git a/llvm/include/llvm/Analysis/TargetLibraryInfo.def b/llvm/include/llvm/Analysis/TargetLibraryInfo.def index 3602e91..5f6af35 100644 --- a/llvm/include/llvm/Analysis/TargetLibraryInfo.def +++ b/llvm/include/llvm/Analysis/TargetLibraryInfo.def @@ -1315,7 +1315,7 @@ TLI_DEFINE_SIG_INTERNAL(Int) /// int fprintf(FILE *stream, const char *format, ...); TLI_DEFINE_ENUM_INTERNAL(fprintf) TLI_DEFINE_STRING_INTERNAL("fprintf") -TLI_DEFINE_SIG_INTERNAL(Int, Ptr, Ellip) +TLI_DEFINE_SIG_INTERNAL(Int, Ptr, Ptr, Ellip) /// int fputc(int c, FILE *stream); TLI_DEFINE_ENUM_INTERNAL(fputc) diff --git a/llvm/test/Transforms/InstCombine/fprintf-wrong-sig.ll b/llvm/test/Transforms/InstCombine/fprintf-wrong-sig.ll new file mode 100644 index 0000000..4810f36 --- /dev/null +++ b/llvm/test/Transforms/InstCombine/fprintf-wrong-sig.ll @@ -0,0 +1,15 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt -S -passes=instcombine < %s | FileCheck %s + +@.str = private constant [13 x i8] c"an error: %d\00" + +declare i32 @fprintf(ptr, ...) + +define i32 @test1() { +; CHECK-LABEL: @test1( +; CHECK-NEXT: [[CALL:%.*]] = call i32 (ptr, ...) @fprintf(ptr nonnull @.str) +; CHECK-NEXT: ret i32 0 +; + %call = call i32 (ptr, ...) @fprintf(ptr @.str) + ret i32 0 +} -- 2.7.4