mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
4b19fcab9c
Summary: MemDep caches results that signify that a dependence is non-local, and there is currently no way to invalidate such cache entries. Unfortunately, when MLSM sinks a store that can result in a non-local dependence becoming a local one, and then MemDep gives wrong answers. The easiest way out here is to just say that MLSM does indeed not preserve MemDep results. Reviewers: davide, Gerolf Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D43177 llvm-svn: 325880
23 lines
598 B
LLVM
23 lines
598 B
LLVM
; RUN: opt < %s -memcpyopt -mldst-motion -gvn -S | FileCheck %s
|
|
|
|
define void @foo(i8* %ret, i1 %x) {
|
|
%a = alloca i8
|
|
br i1 %x, label %yes, label %no
|
|
|
|
yes: ; preds = %0
|
|
%gepa = getelementptr i8, i8* %a, i64 0
|
|
store i8 5, i8* %gepa
|
|
br label %out
|
|
|
|
no: ; preds = %0
|
|
%gepb = getelementptr i8, i8* %a, i64 0
|
|
store i8 5, i8* %gepb
|
|
br label %out
|
|
|
|
out: ; preds = %no, %yes
|
|
%tmp = load i8, i8* %a
|
|
; CHECK-NOT: undef
|
|
store i8 %tmp, i8* %ret
|
|
ret void
|
|
}
|