mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
[GVN] Preserve !range metadata when PRE'ing loads
Reviewers: dberlin, reames, george.burgess.iv Subscribers: mcrosier, llvm-commits Differential Revision: http://reviews.llvm.org/D20743 llvm-svn: 271034
This commit is contained in:
parent
ac24107aac
commit
91e7c14953
@ -1567,6 +1567,8 @@ bool GVN::PerformLoadPRE(LoadInst *LI, AvailValInBlkVect &ValuesPerBlock,
|
||||
NewLoad->setMetadata(LLVMContext::MD_invariant_load, MD);
|
||||
if (auto *InvGroupMD = LI->getMetadata(LLVMContext::MD_invariant_group))
|
||||
NewLoad->setMetadata(LLVMContext::MD_invariant_group, InvGroupMD);
|
||||
if (auto *RangeMD = LI->getMetadata(LLVMContext::MD_range))
|
||||
NewLoad->setMetadata(LLVMContext::MD_range, RangeMD);
|
||||
|
||||
// Transfer DebugLoc.
|
||||
NewLoad->setDebugLoc(LI->getDebugLoc());
|
||||
|
24
test/Transforms/GVN/load-metadata.ll
Normal file
24
test/Transforms/GVN/load-metadata.ll
Normal file
@ -0,0 +1,24 @@
|
||||
; RUN: opt -S -gvn < %s | FileCheck %s
|
||||
|
||||
define i32 @test1(i32* %p, i1 %C) {
|
||||
; CHECK-LABEL: @test1(
|
||||
block1:
|
||||
br i1 %C, label %block2, label %block3
|
||||
|
||||
block2:
|
||||
br label %block4
|
||||
; CHECK: block2:
|
||||
; CHECK-NEXT: load i32, i32* %p, !range !0, !invariant.group !1
|
||||
|
||||
block3:
|
||||
store i32 0, i32* %p
|
||||
br label %block4
|
||||
|
||||
block4:
|
||||
%PRE = load i32, i32* %p, !range !0, !invariant.group !1
|
||||
ret i32 %PRE
|
||||
}
|
||||
|
||||
|
||||
!0 = !{i32 40, i32 100}
|
||||
!1 = !{!"magic ptr"}
|
Loading…
Reference in New Issue
Block a user