Current implementation of Instruction::mayReadFromMemory() returns !doesNotAccessMemory() which is !ReadNone. This does not take into account that the writeonly attribute also indicates that the call does not read from memory. The patch changes the predicate to !doesNotReadMemory() that reflects the intended behavior. Differential Revision: https://reviews.llvm.org/D69086 llvm-svn: 375389
16 lines
313 B
LLVM
16 lines
313 B
LLVM
; RUN: opt -S -early-cse < %s | FileCheck %s
|
|
|
|
@var = global i32 undef
|
|
declare void @foo() nounwind
|
|
|
|
define void @test() {
|
|
; CHECK-LABEL: @test(
|
|
; CHECK-NOT: store
|
|
store i32 1, i32* @var
|
|
; CHECK: call void @foo()
|
|
call void @foo() writeonly
|
|
; CHECK: store i32 2, i32* @var
|
|
store i32 2, i32* @var
|
|
ret void
|
|
}
|