Index: lib/Transforms/Vectorize/LoadStoreVectorizer.cpp =================================================================== --- lib/Transforms/Vectorize/LoadStoreVectorizer.cpp +++ lib/Transforms/Vectorize/LoadStoreVectorizer.cpp @@ -155,7 +155,8 @@ = getAnalysis().getTTI(F); // Don't vectorize when the attribute NoImplicitFloat is used. - if (F.hasFnAttribute(Attribute::NoImplicitFloat)) + if (F.hasFnAttribute(Attribute::NoImplicitFloat) || + F.hasFnAttribute(Attribute::OptimizeNone)) return false; Vectorizer V(F, AA, DT, SE, TTI); Index: test/Transforms/LoadStoreVectorizer/AMDGPU/optnone.ll =================================================================== --- /dev/null +++ test/Transforms/LoadStoreVectorizer/AMDGPU/optnone.ll @@ -0,0 +1,12 @@ +; RUN: opt -mtriple=amdgcn-amd-amdhsa -load-store-vectorizer -S -o - %s | FileCheck %s + +; CHECK-LABEL: @optnone( +; CHECK: store i32 +; CHECK: store i32 +define void @optnone(i32 addrspace(1)* %out) noinline optnone { + %out.gep.1 = getelementptr i32, i32 addrspace(1)* %out, i32 1 + + store i32 123, i32 addrspace(1)* %out.gep.1 + store i32 456, i32 addrspace(1)* %out + ret void +}