[PATCH] D83101: [Scalarizer] ExtractElement handling w/ constant extract index

Jay Foad via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 6 12:54:04 PDT 2020


foad added a comment.

@lebedev.ri this is causing assertion failures and verification failures in some of our downstream tests. Here's a test case:

  $ cat reduced.ll
  define void @main(<3 x i32> inreg %w) {
  entry:
    %a = extractelement <3 x i32> undef, i32 0
    %b = extractelement <3 x i32> undef, i32 1
    %x = extractelement <3 x i32> %w, i32 2
    %y = insertelement <4 x i32> undef, i32 %x, i32 2
    %z = insertelement <4 x i32> %y, i32 undef, i32 3
    store <4 x i32> %z, <4 x i32> addrspace(7)* undef, align 16
    ret void
  }
  $ ~/llvm-debug/bin/opt -scalarizer -o /dev/null reduced.ll
  Instruction does not dominate all uses!
    <badref> = extractelement [145938144 x half] <badref>, i32 undef
    %z.upto2 = insertelement <4 x i32> undef, i32 <badref>, i32 2
  in function main
  LLVM ERROR: Broken function found, compilation aborted!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D83101





More information about the llvm-commits mailing list