[llvm] SimplifyLibCalls: Use default globals address space when building new global strings. (PR #118729)

Jessica Clarke via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 9 12:02:10 PST 2024


================
@@ -0,0 +1,35 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; Test that the printf library call simplifier works correctly.
+;
+; RUN: opt < %s -passes=instcombine -S | FileCheck %s
+
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-G200"
+
+ at hello_world = addrspace(200) constant [13 x i8] c"hello world\0A\00"
+ at percent_s = addrspace(200) constant [4 x i8] c"%s\0A\00"
+
+declare i32 @printf(ptr addrspace(200) , ...)
+declare i32 @puts(ptr addrspace(200))
----------------
jrtc27 wrote:

> So TargetLibraryInfo should refuse to recognize this declaration, and the call shouldn't be transformed. 

Well, that's not what came out of https://reviews.llvm.org/D95142, but that was in part due to not having any way to get the right address space for a libcall. What *was* universally agreed though was that picking a random one of the fine-grained address spaces was not correct (the initial version of the patch even used the globals address space just like this one here).

https://github.com/llvm/llvm-project/pull/118729


More information about the llvm-commits mailing list