[all-commits] [llvm/llvm-project] 93edfb: [SLP][NFC]Add a test to show an issue with incorre...

Jameson Nash via All-commits all-commits at lists.llvm.org
Wed Nov 10 09:51:32 PST 2021


  Branch: refs/heads/release/13.x
  Home:   https://github.com/llvm/llvm-project
  Commit: 93edfb23b18b50c9356c1e99903e077095b66b59
      https://github.com/llvm/llvm-project/commit/93edfb23b18b50c9356c1e99903e077095b66b59
  Author: Alexey Bataev <a.bataev at outlook.com>
  Date:   2021-11-10 (Wed, 10 Nov 2021)

  Changed paths:
    M llvm/test/Transforms/SLPVectorizer/X86/extract_in_tree_user.ll

  Log Message:
  -----------
  [SLP][NFC]Add a test to show an issue with incorrectly extracted
pointers.

(cherry picked from commit 173dd896db976d1e975a2a5d844fc09238884277)


  Commit: 32bb956916e3229bb060b12d7381cebc6fd05903
      https://github.com/llvm/llvm-project/commit/32bb956916e3229bb060b12d7381cebc6fd05903
  Author: Jameson Nash <vtjnash at gmail.com>
  Date:   2021-11-10 (Wed, 10 Nov 2021)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    M llvm/test/Transforms/SLPVectorizer/X86/extract_in_tree_user.ll

  Log Message:
  -----------
  Bad SLPVectorization shufflevector replacement, resulting in write to wrong memory location

We see that it might otherwise do:

  %10 = getelementptr {}**, <2 x {}***> %9, <2 x i32> <i32 10, i32 4>
  %11 = bitcast <2 x {}***> %10 to <2 x i64*>
...
  %27 = extractelement <2 x i64*> %11, i32 0
  %28 = bitcast i64* %27 to <2 x i64>*
  store <2 x i64> %22, <2 x i64>* %28, align 4, !tbaa !2

Which is an out-of-bounds store (the extractelement got offset 10
instead of offset 4 as intended). With the fix, we correctly generate
extractelement for i32 1 and generate correct code.

Differential Revision: https://reviews.llvm.org/D106613

(cherry picked from commit e27a6db5298f6ba3c1dbc8bab25c769cfa761b2a)


Compare: https://github.com/llvm/llvm-project/compare/162f3f18c945...32bb956916e3


More information about the All-commits mailing list