Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1735)

Unified Diff: test/Transforms/NaCl/expand-varargs.ll

Issue 1151093004: Changes from 3.7 merge to files not in upstream (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/Transforms/NaCl/expand-varargs.ll
diff --git a/test/Transforms/NaCl/expand-varargs.ll b/test/Transforms/NaCl/expand-varargs.ll
index 937ff7faede11be49673e7822d801d038a22c05e..814e13a5857cc53ff3bb6c6ffec030445e732ee3 100644
--- a/test/Transforms/NaCl/expand-varargs.ll
+++ b/test/Transforms/NaCl/expand-varargs.ll
@@ -44,15 +44,15 @@ entry:
%odouble = bitcast i8* %o8 to double*
%arglist_alloc = alloca [4 x i32], align 4
- %arglist = getelementptr inbounds [4 x i32]* %arglist_alloc, i32 0, i32 0
+ %arglist = getelementptr inbounds [4 x i32], [4 x i32]* %arglist_alloc, i32 0, i32 0
%arglist.i8 = bitcast [4 x i32]* %arglist_alloc to i8*
call void @llvm.va_start(i8* %arglist.i8)
br label %start
start:
%idx = phi i32 [ 0, %entry ], [ %inc, %next ]
- %fmt.gep = getelementptr inbounds i8* %fmt, i32 %idx
- %arg.type = load i8* %fmt.gep
+ %fmt.gep = getelementptr inbounds i8, i8* %fmt, i32 %idx
+ %arg.type = load i8, i8* %fmt.gep
switch i8 %arg.type, label %next [
i8 0, label %done
i8 1, label %type.i8
@@ -68,15 +68,15 @@ type.i8: ; CHECK: type.i8:
store i8 %i8, i8* %o8
br label %next
; CHECK-NEXT: %arglist1 = bitcast i32* %arglist to i8**
-; CHECK-NEXT: %arglist_current = load i8** %arglist1
+; CHECK-NEXT: %arglist_current = load i8*, i8** %arglist1
; CHECK-NEXT: %[[P2I:[0-9]+]] = ptrtoint i8* %arglist_current to i32
; %A8 = (uintptr_t)Addr + Alignment - 1
-; CHECK-NEXT: %[[A8:[0-9]+]] = add nuw i32 %[[P2I]], sub nuw (i32 ptrtoint (i8* getelementptr ({ i1, i8 }* null, i64 0, i32 1) to i32), i32 1)
+; CHECK-NEXT: %[[A8:[0-9]+]] = add nuw i32 %[[P2I]], sub nuw (i32 ptrtoint (i8* getelementptr ({ i1, i8 }, { i1, i8 }* null, i64 0, i32 1) to i32), i32 1)
; %B8 = %1 & ~(uintptr_t)(Alignment - 1)
-; CHECK-NEXT: %[[B8:[0-9]+]] = and i32 %[[A8]], xor (i32 sub nuw (i32 ptrtoint (i8* getelementptr ({ i1, i8 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
+; CHECK-NEXT: %[[B8:[0-9]+]] = and i32 %[[A8]], xor (i32 sub nuw (i32 ptrtoint (i8* getelementptr ({ i1, i8 }, { i1, i8 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
; CHECK-NEXT: %[[C8:[0-9]+]] = inttoptr i32 %[[B8]] to i8*
-; CHECK-NEXT: %i8 = load i8* %[[C8]]
-; CHECK-NEXT: %arglist_next = getelementptr inbounds i8* %[[C8]], i32 1
+; CHECK-NEXT: %i8 = load i8, i8* %[[C8]]
+; CHECK-NEXT: %arglist_next = getelementptr inbounds i8, i8* %[[C8]], i32 1
; CHECK-NEXT: store i8* %arglist_next, i8** %arglist1
; CHECK-NEXT: store i8 %i8, i8* %o8
; CHECK-NEXT: br label %next
@@ -85,46 +85,46 @@ type.i16: ; CHECK: type.i16:
%i16 = va_arg i32* %arglist, i16
store i16 %i16, i16* %o16
br label %next
-; CHECK: %[[A16:[0-9]+]] = add nuw i32 %4, sub nuw (i32 ptrtoint (i16* getelementptr ({ i1, i16 }* null, i64 0, i32 1) to i32), i32 1)
-; CHECK-NEXT: %[[B16:[0-9]+]] = and i32 %[[A16]], xor (i32 sub nuw (i32 ptrtoint (i16* getelementptr ({ i1, i16 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
+; CHECK: %[[A16:[0-9]+]] = add nuw i32 %4, sub nuw (i32 ptrtoint (i16* getelementptr ({ i1, i16 }, { i1, i16 }* null, i64 0, i32 1) to i32), i32 1)
+; CHECK-NEXT: %[[B16:[0-9]+]] = and i32 %[[A16]], xor (i32 sub nuw (i32 ptrtoint (i16* getelementptr ({ i1, i16 }, { i1, i16 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
; CHECK-NEXT: %[[C16:[0-9]+]] = inttoptr i32 %[[B16]] to i16*
-; CHECK-NEXT: %i16 = load i16* %[[C16]]
+; CHECK-NEXT: %i16 = load i16, i16* %[[C16]]
type.i32: ; CHECK: type.i32:
%i32 = va_arg i32* %arglist, i32
store i32 %i32, i32* %o32
br label %next
-; CHECK: %[[A32:[0-9]+]] = add nuw i32 %8, sub nuw (i32 ptrtoint (i32* getelementptr ({ i1, i32 }* null, i64 0, i32 1) to i32), i32 1)
-; CHECK-NEXT: %[[B32:[0-9]+]] = and i32 %[[A32]], xor (i32 sub nuw (i32 ptrtoint (i32* getelementptr ({ i1, i32 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
+; CHECK: %[[A32:[0-9]+]] = add nuw i32 %8, sub nuw (i32 ptrtoint (i32* getelementptr ({ i1, i32 }, { i1, i32 }* null, i64 0, i32 1) to i32), i32 1)
+; CHECK-NEXT: %[[B32:[0-9]+]] = and i32 %[[A32]], xor (i32 sub nuw (i32 ptrtoint (i32* getelementptr ({ i1, i32 }, { i1, i32 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
; CHECK-NEXT: %[[C32:[0-9]+]] = inttoptr i32 %[[B32]] to i32*
-; CHECK-NEXT: %i32 = load i32* %[[C32]]
+; CHECK-NEXT: %i32 = load i32, i32* %[[C32]]
type.i64: ; CHECK: type.i64:
%i64 = va_arg i32* %arglist, i64
store i64 %i64, i64* %o64
br label %next
-; CHECK: %[[A64:[0-9]+]] = add nuw i32 %12, sub nuw (i32 ptrtoint (i64* getelementptr ({ i1, i64 }* null, i64 0, i32 1) to i32), i32 1)
-; CHECK-NEXT: %[[B64:[0-9]+]] = and i32 %[[A64]], xor (i32 sub nuw (i32 ptrtoint (i64* getelementptr ({ i1, i64 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
+; CHECK: %[[A64:[0-9]+]] = add nuw i32 %12, sub nuw (i32 ptrtoint (i64* getelementptr ({ i1, i64 }, { i1, i64 }* null, i64 0, i32 1) to i32), i32 1)
+; CHECK-NEXT: %[[B64:[0-9]+]] = and i32 %[[A64]], xor (i32 sub nuw (i32 ptrtoint (i64* getelementptr ({ i1, i64 }, { i1, i64 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
; CHECK-NEXT: %[[C64:[0-9]+]] = inttoptr i32 %[[B64]] to i64*
-; CHECK-NEXT: %i64 = load i64* %[[C64]]
+; CHECK-NEXT: %i64 = load i64, i64* %[[C64]]
type.float: ; CHECK: type.float:
%float = va_arg i32* %arglist, float
store float %float, float* %ofloat
br label %next
-; CHECK: %[[AF:[0-9]+]] = add nuw i32 %16, sub nuw (i32 ptrtoint (float* getelementptr ({ i1, float }* null, i64 0, i32 1) to i32), i32 1)
-; CHECK-NEXT: %[[BF:[0-9]+]] = and i32 %[[AF]], xor (i32 sub nuw (i32 ptrtoint (float* getelementptr ({ i1, float }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
+; CHECK: %[[AF:[0-9]+]] = add nuw i32 %16, sub nuw (i32 ptrtoint (float* getelementptr ({ i1, float }, { i1, float }* null, i64 0, i32 1) to i32), i32 1)
+; CHECK-NEXT: %[[BF:[0-9]+]] = and i32 %[[AF]], xor (i32 sub nuw (i32 ptrtoint (float* getelementptr ({ i1, float }, { i1, float }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
; CHECK-NEXT: %[[CF:[0-9]+]] = inttoptr i32 %[[BF]] to float*
-; CHECK-NEXT: %float = load float* %[[CF]]
+; CHECK-NEXT: %float = load float, float* %[[CF]]
type.double: ; CHECK: type.double:
%double = va_arg i32* %arglist, double
store double %double, double* %odouble
br label %next
-; CHECK: %[[AD:[0-9]+]] = add nuw i32 %20, sub nuw (i32 ptrtoint (double* getelementptr ({ i1, double }* null, i64 0, i32 1) to i32), i32 1)
-; CHECK-NEXT: %[[BD:[0-9]+]] = and i32 %[[AD]], xor (i32 sub nuw (i32 ptrtoint (double* getelementptr ({ i1, double }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
+; CHECK: %[[AD:[0-9]+]] = add nuw i32 %20, sub nuw (i32 ptrtoint (double* getelementptr ({ i1, double }, { i1, double }* null, i64 0, i32 1) to i32), i32 1)
+; CHECK-NEXT: %[[BD:[0-9]+]] = and i32 %[[AD]], xor (i32 sub nuw (i32 ptrtoint (double* getelementptr ({ i1, double }, { i1, double }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
; CHECK-NEXT: %[[CD:[0-9]+]] = inttoptr i32 %[[BD]] to double*
-; CHECK-NEXT: %double = load double* %[[CD]]
+; CHECK-NEXT: %double = load double, double* %[[CD]]
next:
%inc = add i32 %idx, 1
@@ -137,18 +137,18 @@ done:
define i32 @varargs_call1() {
- %result = call i32 (i32, ...)* @varargs_func(i32 111, i64 222, i32 333, double 4.0)
+ %result = call i32 (i32, ...) @varargs_func(i32 111, i64 222, i32 333, double 4.0)
ret i32 %result
}
; CHECK-LABEL: @varargs_call1(
; CHECK-NEXT: %vararg_buffer = alloca { i64, i32, double }
; CHECK-NEXT: %vararg_lifetime_bitcast = bitcast { i64, i32, double }* %vararg_buffer to i8*
; CHECK-NEXT: call void @llvm.lifetime.start(i64 24, i8* %vararg_lifetime_bitcast)
-; CHECK-NEXT: %vararg_ptr = getelementptr inbounds { i64, i32, double }* %vararg_buffer, i32 0, i32 0
+; CHECK-NEXT: %vararg_ptr = getelementptr inbounds { i64, i32, double }, { i64, i32, double }* %vararg_buffer, i32 0, i32 0
; CHECK-NEXT: store i64 222, i64* %vararg_ptr
-; CHECK-NEXT: %vararg_ptr1 = getelementptr inbounds { i64, i32, double }* %vararg_buffer, i32 0, i32 1
+; CHECK-NEXT: %vararg_ptr1 = getelementptr inbounds { i64, i32, double }, { i64, i32, double }* %vararg_buffer, i32 0, i32 1
; CHECK-NEXT: store i32 333, i32* %vararg_ptr1
-; CHECK-NEXT: %vararg_ptr2 = getelementptr inbounds { i64, i32, double }* %vararg_buffer, i32 0, i32 2
+; CHECK-NEXT: %vararg_ptr2 = getelementptr inbounds { i64, i32, double }, { i64, i32, double }* %vararg_buffer, i32 0, i32 2
; CHECK-NEXT: store double 4.{{0*}}e+00, double* %vararg_ptr2
; CHECK-NEXT: %result = call i32 bitcast (i32 (i32, i8*)* @varargs_func to i32 (i32, { i64, i32, double }*)*)(i32 111, { i64, i32, double }* %vararg_buffer)
; CHECK-NEXT: call void @llvm.lifetime.end(i64 24, i8* %vararg_lifetime_bitcast)
@@ -157,7 +157,7 @@ define i32 @varargs_call1() {
; Check that the pass works when there are no variable arguments.
define i32 @call_with_zero_varargs() {
- %result = call i32 (i32, ...)* @varargs_func(i32 111)
+ %result = call i32 (i32, ...) @varargs_func(i32 111)
ret i32 %result
}
; CHECK-LABEL: @call_with_zero_varargs(
@@ -191,8 +191,8 @@ lpad:
define void @varargs_multiple_calls() {
- %call1 = call i32 (i32, ...)* @varargs_func(i32 11, i64 22, i32 33)
- %call2 = call i32 (i32, ...)* @varargs_func(i32 44, i64 55, i32 66)
+ %call1 = call i32 (i32, ...) @varargs_func(i32 11, i64 22, i32 33)
+ %call2 = call i32 (i32, ...) @varargs_func(i32 44, i64 55, i32 66)
ret void
}
; CHECK-LABEL: @varargs_multiple_calls(
@@ -210,13 +210,13 @@ define i32 @va_arg_i32(i8* %arglist) {
}
; CHECK-LABEL: define i32 @va_arg_i32(i8* %arglist) {
; CHECK-NEXT: %arglist1 = bitcast i8* %arglist to i32**
-; CHECK-NEXT: %arglist_current = load i32** %arglist1
+; CHECK-NEXT: %arglist_current = load i32*, i32** %arglist1
; CHECK-NEXT: %1 = ptrtoint i32* %arglist_current to i32
-; CHECK-NEXT: %2 = add nuw i32 %1, sub nuw (i32 ptrtoint (i32* getelementptr ({ i1, i32 }* null, i64 0, i32 1) to i32), i32 1)
-; CHECK-NEXT: %3 = and i32 %2, xor (i32 sub nuw (i32 ptrtoint (i32* getelementptr ({ i1, i32 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
+; CHECK-NEXT: %2 = add nuw i32 %1, sub nuw (i32 ptrtoint (i32* getelementptr ({ i1, i32 }, { i1, i32 }* null, i64 0, i32 1) to i32), i32 1)
+; CHECK-NEXT: %3 = and i32 %2, xor (i32 sub nuw (i32 ptrtoint (i32* getelementptr ({ i1, i32 }, { i1, i32 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
; CHECK-NEXT: %4 = inttoptr i32 %3 to i32*
-; CHECK-NEXT: %result = load i32* %4
-; CHECK-NEXT: %arglist_next = getelementptr inbounds i32* %4, i32 1
+; CHECK-NEXT: %result = load i32, i32* %4
+; CHECK-NEXT: %arglist_next = getelementptr inbounds i32, i32* %4, i32 1
; CHECK-NEXT: store i32* %arglist_next, i32** %arglist1
; CHECK-NEXT: ret i32 %result
@@ -227,13 +227,13 @@ define i64 @va_arg_i64(i8* %arglist) {
}
; CHECK-LABEL: define i64 @va_arg_i64(i8* %arglist) {
; CHECK-NEXT: %arglist1 = bitcast i8* %arglist to i64**
-; CHECK-NEXT: %arglist_current = load i64** %arglist1
+; CHECK-NEXT: %arglist_current = load i64*, i64** %arglist1
; CHECK-NEXT: %1 = ptrtoint i64* %arglist_current to i32
-; CHECK-NEXT: %2 = add nuw i32 %1, sub nuw (i32 ptrtoint (i64* getelementptr ({ i1, i64 }* null, i64 0, i32 1) to i32), i32 1)
-; CHECK-NEXT: %3 = and i32 %2, xor (i32 sub nuw (i32 ptrtoint (i64* getelementptr ({ i1, i64 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
+; CHECK-NEXT: %2 = add nuw i32 %1, sub nuw (i32 ptrtoint (i64* getelementptr ({ i1, i64 }, { i1, i64 }* null, i64 0, i32 1) to i32), i32 1)
+; CHECK-NEXT: %3 = and i32 %2, xor (i32 sub nuw (i32 ptrtoint (i64* getelementptr ({ i1, i64 }, { i1, i64 }* null, i64 0, i32 1) to i32), i32 1), i32 -1)
; CHECK-NEXT: %4 = inttoptr i32 %3 to i64*
-; CHECK-NEXT: %result = load i64* %4
-; CHECK-NEXT: %arglist_next = getelementptr inbounds i64* %4, i32 1
+; CHECK-NEXT: %result = load i64, i64* %4
+; CHECK-NEXT: %arglist_next = getelementptr inbounds i64, i64* %4, i32 1
; CHECK-NEXT: store i64* %arglist_next, i64** %arglist1
; CHECK-NEXT: ret i64 %result
@@ -245,6 +245,6 @@ define void @do_va_copy(i8* %dest, i8* %src) {
; CHECK-LABEL: define void @do_va_copy(
; CHECK-NEXT: %vacopy_src = bitcast i8* %src to i8**
; CHECK-NEXT: %vacopy_dest = bitcast i8* %dest to i8**
-; CHECK-NEXT: %vacopy_currentptr = load i8** %vacopy_src
+; CHECK-NEXT: %vacopy_currentptr = load i8*, i8** %vacopy_src
; CHECK-NEXT: store i8* %vacopy_currentptr, i8** %vacopy_dest
; CHECK-NEXT: ret void

Powered by Google App Engine
This is Rietveld 408576698