Don't pass the raw invalid pointer used to represent conflicting

TBAA information to AliasAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116751 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman
2010-10-18 21:28:00 +00:00
parent b41ee96d76
commit fb8096dee5
3 changed files with 49 additions and 4 deletions

View File

@@ -3,6 +3,7 @@
; LICM should be able to hoist the address load out of the loop
; by using TBAA information.
; CHECK: @foo
; CHECK: entry:
; CHECK-NEXT: %tmp3 = load double** @P, !tbaa !0
; CHECK-NEXT: br label %for.body
@@ -31,3 +32,30 @@ for.end: ; preds = %for.body, %entry
!0 = metadata !{metadata !"root", null}
!1 = metadata !{metadata !"pointer", metadata !0}
!2 = metadata !{metadata !"double", metadata !0}
; LICM shouldn't hoist anything here.
; CHECK: @bar
; CHECK: loop:
; CHECK: load
; CHECK: store
; CHECK: load
; CHECK: store
; CHECK: br label %loop
define void @bar(i8** %p) nounwind {
entry:
%q = bitcast i8** %p to i8*
br label %loop
loop:
%tmp51 = load i8** %p, !tbaa !4
store i8* %tmp51, i8** %p
%tmp40 = load i8* %q, !tbaa !5
store i8 %tmp40, i8* %q
br label %loop
}
!3 = metadata !{metadata !"pointer", metadata !4}
!4 = metadata !{metadata !"char", metadata !5}
!5 = metadata !{metadata !"root", null}