From 0e7a83f502497602bdba927bf82d14387ef28611 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Tue, 10 Jan 2023 17:02:47 -0500 Subject: [PATCH] AMDGPU: Don't expand printf users if printf is defined --- .../lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp | 2 +- llvm/test/CodeGen/AMDGPU/printf-defined.ll | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 llvm/test/CodeGen/AMDGPU/printf-defined.ll diff --git a/llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp b/llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp index a28721c..7018f0a 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp @@ -489,7 +489,7 @@ bool AMDGPUPrintfRuntimeBindingImpl::run(Module &M) { return false; auto PrintfFunction = M.getFunction("printf"); - if (!PrintfFunction) + if (!PrintfFunction || !PrintfFunction->isDeclaration()) return false; for (auto &U : PrintfFunction->uses()) { diff --git a/llvm/test/CodeGen/AMDGPU/printf-defined.ll b/llvm/test/CodeGen/AMDGPU/printf-defined.ll new file mode 100644 index 0000000..22740a0 --- /dev/null +++ b/llvm/test/CodeGen/AMDGPU/printf-defined.ll @@ -0,0 +1,20 @@ +; NOTE: Assertions have been autogenerated by utils/update_test_checks.py +; RUN: opt -mtriple=amdgcn-- -passes=amdgpu-printf-runtime-binding -mcpu=fiji -S < %s | FileCheck --check-prefix=GCN %s + +@format.str = private unnamed_addr addrspace(4) constant [8 x i8] c"arst %d\00", align 1 + +define i32 @printf(ptr addrspace(4), ...) { +; GCN-LABEL: @printf( +; GCN-NEXT: ret i32 0 +; + ret i32 0 +} + +define void @printf_caller(i32 %n) { +; GCN-LABEL: @printf_caller( +; GCN-NEXT: [[CALL:%.*]] = call i32 @printf(ptr addrspace(4) @format.str, i32 [[N:%.*]]) +; GCN-NEXT: ret void +; + %call = call i32 @printf(ptr addrspace(4) @format.str, i32 %n) + ret void +} -- 2.7.4