comparison test/CodeGen/X86/stdarg.ll @ 95:afa8332a0e37 LLVM3.8

LLVM 3.8
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Tue, 13 Oct 2015 17:48:58 +0900
parents 95c75e76d11b
children 1172e4bd9c6f
comparison
equal deleted inserted replaced
84:f3e34b893a5f 95:afa8332a0e37
1 ; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s 1 ; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s
2 ; CHECK: testb %al, %al
3 2
4 %struct.__va_list_tag = type { i32, i32, i8*, i8* } 3 %struct.__va_list_tag = type { i32, i32, i8*, i8* }
5 4
6 define void @foo(i32 %x, ...) nounwind { 5 define void @foo(i32 %x, ...) nounwind {
7 entry: 6 entry:
8 %ap = alloca [1 x %struct.__va_list_tag], align 8; <[1 x %struct.__va_list_tag]*> [#uses=2] 7 %ap = alloca [1 x %struct.__va_list_tag], align 8; <[1 x %struct.__va_list_tag]*> [#uses=2]
9 %ap12 = bitcast [1 x %struct.__va_list_tag]* %ap to i8*; <i8*> [#uses=2] 8 %ap12 = bitcast [1 x %struct.__va_list_tag]* %ap to i8*; <i8*> [#uses=2]
10 call void @llvm.va_start(i8* %ap12) 9 call void @llvm.va_start(i8* %ap12)
11 %ap3 = getelementptr inbounds [1 x %struct.__va_list_tag]* %ap, i64 0, i64 0; <%struct.__va_list_tag*> [#uses=1] 10 ; CHECK: testb %al, %al
11
12 ; These test for specific offsets, which is very fragile. Still, the test needs
13 ; to ensure that va_list has the correct element types.
14 ;
15 ; CHECK-DAG: movq {{.*}}, 192(%rsp)
16 ; CHECK-DAG: movq {{.*}}, 184(%rsp)
17 ; CHECK-DAG: movl {{.*}}, 180(%rsp)
18 ; CHECK-DAG: movl {{.*}}, 176(%rsp)
19 %ap3 = getelementptr inbounds [1 x %struct.__va_list_tag], [1 x %struct.__va_list_tag]* %ap, i64 0, i64 0; <%struct.__va_list_tag*> [#uses=1]
12 call void @bar(%struct.__va_list_tag* %ap3) nounwind 20 call void @bar(%struct.__va_list_tag* %ap3) nounwind
13 call void @llvm.va_end(i8* %ap12) 21 call void @llvm.va_end(i8* %ap12)
14 ret void 22 ret void
15 } 23 }
16 24