1*9880d681SAndroid Build Coastguard Worker; RUN: llvm-dis < %s.bc| FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: verify-uselistorder < %s.bc 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; vaArgIntrinsic.3.2.ll.bc was generated by passing this file to llvm-as-3.2. 5*9880d681SAndroid Build Coastguard Worker; The test checks that LLVM does not misread variable argument intrinsic instructions 6*9880d681SAndroid Build Coastguard Worker; of older bitcode files. 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine i32 @varArgIntrinsic(i32 %X, ...) { 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker %ap = alloca i8* 11*9880d681SAndroid Build Coastguard Worker %ap2 = bitcast i8** %ap to i8* 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; CHECK: call void @llvm.va_start(i8* %ap2) 14*9880d681SAndroid Build Coastguard Worker call void @llvm.va_start(i8* %ap2) 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: %tmp = va_arg i8** %ap, i32 17*9880d681SAndroid Build Coastguard Worker %tmp = va_arg i8** %ap, i32 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker %aq = alloca i8* 20*9880d681SAndroid Build Coastguard Worker %aq2 = bitcast i8** %aq to i8* 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Worker; CHECK: call void @llvm.va_copy(i8* %aq2, i8* %ap2) 23*9880d681SAndroid Build Coastguard Worker call void @llvm.va_copy(i8* %aq2, i8* %ap2) 24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @llvm.va_end(i8* %aq2) 25*9880d681SAndroid Build Coastguard Worker call void @llvm.va_end(i8* %aq2) 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @llvm.va_end(i8* %ap2) 28*9880d681SAndroid Build Coastguard Worker call void @llvm.va_end(i8* %ap2) 29*9880d681SAndroid Build Coastguard Worker ret i32 %tmp 30*9880d681SAndroid Build Coastguard Worker} 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.va_start(i8*) 33*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.va_copy(i8*, i8*) 34*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.va_end(i8*) 35