[PATCH] D112717: [IR] Replace *all* uses of a constant expression by corresponding instruction

Jon Chesterfield via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 13 23:38:53 PDT 2022


JonChesterfield added a comment.

Example repro.

  ; RUN: opt -S -mtriple=amdgcn-- -amdgpu-lower-module-lds < %s | FileCheck %s
  ; RUN: opt -S -mtriple=amdgcn-- -passes=amdgpu-lower-module-lds < %s | FileCheck %s
  
  @var = addrspace(3) global i32 undef, align 4
  
  define amdgpu_kernel void @func(i32 %c) {
  entry:
    switch i32 %c, label %return [
      i32 0, label %bb0
      i32 1, label %bb1
    ]
  
  bb0:
    br label %bb2
  
  bb1:
    br label %bb2
  
  bb2:
    %tmp = phi ptr [ addrspacecast (ptr addrspace(3) @var to ptr), %bb0 ],
                   [ addrspacecast (ptr addrspace(3) @var to ptr), %bb1 ]
    br label %return
  
  return:
    ret void
  }



  Instruction does not dominate all uses!
    %0 = addrspacecast ptr addrspace(3) @llvm.amdgcn.kernel.func.lds to ptr
    %tmp = phi ptr [ %0, %bb0 ], [ %0, %bb1 ]


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D112717



More information about the llvm-commits mailing list