llvm-capstone/llvm/test/Analysis/MemorySSA/loop-rotate-simplified-clone.ll
Alina Sbirlea 4bc625cae0 [MemorySSA] Extend allowed behavior for simplified instructions.
Summary:
LoopRotate may simplify instructions, leading to the new instructions not having memory accesses created for them.
Allow this behavior, by allowing the new access to be null when the template is null, and looking upwards for the proper defined access when dealing with simplified instructions.

Reviewers: george.burgess.iv

Subscribers: jlebar, Prazek, llvm-commits

Tags: #llvm

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

llvm-svn: 367352
2019-07-30 20:10:33 +00:00

30 lines
651 B
LLVM

; RUN: opt -verify-memoryssa -enable-mssa-loop-dependency -loop-rotate %s -S | FileCheck %s
; REQUIRES: asserts
; CHECK-LABEL: @test()
define dso_local void @test() {
entry:
br label %preheader
preheader:
br label %l39
l39:
%v40 = phi float (float)* [ @foo, %preheader ], [ %v43, %crit_edge ]
%v41 = call float %v40(float undef)
%v42 = load i32, i32* undef, align 8
br i1 undef, label %crit_edge, label %loopexit
crit_edge:
%v43 = load float (float)*, float (float)** undef, align 8
br label %l39
loopexit:
unreachable
}
; Function Attrs: readnone
declare dso_local float @foo(float) #0 align 32
attributes #0 = { readnone }