[PATCH] D89140: [globalopt] Teach to look through `addrspacecast`.

Michael Liao via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 16 05:43:45 PDT 2020


This revision was automatically updated to reflect the committed changes.
Closed by commit rG98f254960f0c: [globalopt] Teach to look through `addrspacecast`. (authored by hliao).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D89140/new/

https://reviews.llvm.org/D89140

Files:
  llvm/lib/Transforms/Utils/GlobalStatus.cpp
  llvm/test/Transforms/GlobalOpt/unnamed-addr.ll


Index: llvm/test/Transforms/GlobalOpt/unnamed-addr.ll
===================================================================
--- llvm/test/Transforms/GlobalOpt/unnamed-addr.ll
+++ llvm/test/Transforms/GlobalOpt/unnamed-addr.ll
@@ -5,12 +5,14 @@
 @c = internal global i32 0, align 4
 @d = internal constant [4 x i8] c"foo\00", align 1
 @e = linkonce_odr global i32 0
+ at f = internal addrspace(3) global float undef, align 4
 
 ; CHECK: @a = internal global i32 0, align 4
 ; CHECK: @b = internal global i32 0, align 4
 ; CHECK: @c = internal unnamed_addr global i32 0, align 4
 ; CHECK: @d = internal unnamed_addr constant [4 x i8] c"foo\00", align 1
 ; CHECK: @e = linkonce_odr local_unnamed_addr global i32 0
+; CHECK: @f = internal unnamed_addr addrspace(3) global float undef, align 4
 
 ; CHECK: define internal fastcc void @used_internal() unnamed_addr {
 define internal void @used_internal() {
@@ -72,3 +74,15 @@
   %tmp1 = load i32, i32* @c, align 4
   ret i32 %tmp1
 }
+
+define float @use_addrspace_cast_for_load() {
+  %p = addrspacecast float addrspace(3)* @f to float*
+  %v = load float, float* %p
+  ret float %v
+}
+
+define void @use_addrspace_cast_for_store(float %x) {
+  %p = addrspacecast float addrspace(3)* @f to float*
+  store float %x, float* %p
+  ret void
+}
Index: llvm/lib/Transforms/Utils/GlobalStatus.cpp
===================================================================
--- llvm/lib/Transforms/Utils/GlobalStatus.cpp
+++ llvm/lib/Transforms/Utils/GlobalStatus.cpp
@@ -136,7 +136,8 @@
             GS.StoredType = GlobalStatus::Stored;
           }
         }
-      } else if (isa<BitCastInst>(I) || isa<GetElementPtrInst>(I)) {
+      } else if (isa<BitCastInst>(I) || isa<GetElementPtrInst>(I) ||
+                 isa<AddrSpaceCastInst>(I)) {
         // Skip over bitcasts and GEPs; we don't care about the type or offset
         // of the pointer.
         if (analyzeGlobalAux(I, GS, VisitedUsers))


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D89140.298604.patch
Type: text/x-patch
Size: 1937 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201016/e478af4d/attachment.bin>


More information about the llvm-commits mailing list