diff options
author | Jameson Nash <vtjnash@gmail.com> | 2021-07-22 19:42:23 -0400 |
---|---|---|
committer | Jameson Nash <vtjnash@gmail.com> | 2021-09-27 14:06:13 -0400 |
commit | e27a6db5298f6ba3c1dbc8bab25c769cfa761b2a (patch) | |
tree | 53aa42202570673525c99371ddad015b2eb932c5 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
parent | b2a2c38349a18b89b04d342632d5ea02f86dfdd6 (diff) | |
download | llvm-e27a6db5298f6ba3c1dbc8bab25c769cfa761b2a.zip llvm-e27a6db5298f6ba3c1dbc8bab25c769cfa761b2a.tar.gz llvm-e27a6db5298f6ba3c1dbc8bab25c769cfa761b2a.tar.bz2 |
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
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
0 files changed, 0 insertions, 0 deletions