mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-27 10:18:36 +00:00
4bc625cae0
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
30 lines
651 B
LLVM
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 }
|