[all-commits] [llvm/llvm-project] e27a6d: Bad SLPVectorization shufflevector replacement, re...
Jameson Nash via All-commits
all-commits at lists.llvm.org
Mon Sep 27 11:09:56 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: e27a6db5298f6ba3c1dbc8bab25c769cfa761b2a
https://github.com/llvm/llvm-project/commit/e27a6db5298f6ba3c1dbc8bab25c769cfa761b2a
Author: Jameson Nash <vtjnash at gmail.com>
Date: 2021-09-27 (Mon, 27 Sep 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
More information about the All-commits
mailing list