mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-14 03:45:33 +00:00
6b2d1346d8
Summary: Regularly when moving an instruction that may not read or write memory, the instruction is not modelled in MSSA, so not action is necessary. For a non-conventional AA pipeline, MSSA needs to explicitly check when creating accesses, so as to not model instructions that may not read and write memory. Reviewers: george.burgess.iv Subscribers: Prazek, sanjoy.google, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D67562 llvm-svn: 372137
27 lines
799 B
LLVM
27 lines
799 B
LLVM
; RUN: opt -disable-basicaa -print-memoryssa -disable-output %s 2>&1 | FileCheck %s
|
|
|
|
; Note: if @foo is modelled as a MemoryDef, this test will assert with -loop-rotate, due to MemorySSA not
|
|
; being preserved when moving instructions that may not read from or write to memory.
|
|
|
|
; CHECK-LABEL: @main
|
|
; CHECK-NOT: MemoryDef
|
|
define void @main() {
|
|
entry:
|
|
br label %for.cond120
|
|
|
|
for.cond120: ; preds = %for.body127, %entry
|
|
call void @foo()
|
|
br i1 undef, label %for.body127, label %for.cond.cleanup126
|
|
|
|
for.cond.cleanup126: ; preds = %for.cond120
|
|
unreachable
|
|
|
|
for.body127: ; preds = %for.cond120
|
|
%0 = load i16**, i16*** undef, align 1
|
|
br label %for.cond120
|
|
}
|
|
|
|
declare void @foo() readnone
|
|
|
|
|