OSDN Git Service

Update aosp/master llvm for rebase to r233350
[android-x86/external-llvm.git] / test / Transforms / FunctionAttrs / nocapture.ll
index 110bd03..23cbc85 100644 (file)
@@ -39,8 +39,8 @@ define i1 @c5(i32* %q, i32 %bitno) {
        %tmp2 = lshr i32 %tmp, %bitno
        %bit = and i32 %tmp2, 1
         ; subtle escape mechanism follows
-       %lookup = getelementptr [2 x i1]* @lookup_table, i32 0, i32 %bit
-       %val = load i1* %lookup
+       %lookup = getelementptr [2 x i1], [2 x i1]* @lookup_table, i32 0, i32 %bit
+       %val = load i1, i1* %lookup
        ret i1 %val
 }
 
@@ -64,14 +64,14 @@ define i1* @lookup_bit(i32* %q, i32 %bitno) readnone nounwind {
        %tmp = ptrtoint i32* %q to i32
        %tmp2 = lshr i32 %tmp, %bitno
        %bit = and i32 %tmp2, 1
-       %lookup = getelementptr [2 x i1]* @lookup_table, i32 0, i32 %bit
+       %lookup = getelementptr [2 x i1], [2 x i1]* @lookup_table, i32 0, i32 %bit
        ret i1* %lookup
 }
 
-; CHECK: define i1 @c7(i32* readnone %q, i32 %bitno)
+; CHECK: define i1 @c7(i32* readonly %q, i32 %bitno)
 define i1 @c7(i32* %q, i32 %bitno) {
        %ptr = call i1* @lookup_bit(i32* %q, i32 %bitno)
-       %val = load i1* %ptr
+       %val = load i1, i1* %ptr
        ret i1 %val
 }
 
@@ -85,7 +85,22 @@ l:
        %y = phi i32* [ %q, %e ]
        %tmp = bitcast i32* %x to i32*          ; <i32*> [#uses=2]
        %tmp2 = select i1 %b, i32* %tmp, i32* %y
-       %val = load i32* %tmp2          ; <i32> [#uses=1]
+       %val = load i32, i32* %tmp2             ; <i32> [#uses=1]
+       store i32 0, i32* %tmp
+       store i32* %y, i32** @g
+       ret i32 %val
+}
+
+; CHECK: define i32 @nc1_addrspace(i32* %q, i32 addrspace(1)* nocapture %p, i1 %b)
+define i32 @nc1_addrspace(i32* %q, i32 addrspace(1)* %p, i1 %b) {
+e:
+       br label %l
+l:
+       %x = phi i32 addrspace(1)* [ %p, %e ]
+       %y = phi i32* [ %q, %e ]
+       %tmp = addrspacecast i32 addrspace(1)* %x to i32*               ; <i32*> [#uses=2]
+       %tmp2 = select i1 %b, i32* %tmp, i32* %y
+       %val = load i32, i32* %tmp2             ; <i32> [#uses=1]
        store i32 0, i32* %tmp
        store i32* %y, i32** @g
        ret i32 %val