1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -disable-basicaa -cfl-steens-aa -aa-eval -print-all-alias-modref-info -disable-output 2>&1 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: Function: test1 4*9880d681SAndroid Build Coastguard Worker; CHECK: MayAlias: i32* %X, i32* %tmp 5*9880d681SAndroid Build Coastguard Worker; CHECK: MayAlias: i32* %tmp, i8** %ap 6*9880d681SAndroid Build Coastguard Worker; CHECK: NoAlias: i8** %ap, i8** %aq 7*9880d681SAndroid Build Coastguard Worker; CHECK: MayAlias: i32* %tmp, i8** %aq 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdefine i32* @test1(i32* %X, ...) { 10*9880d681SAndroid Build Coastguard Worker ; Initialize variable argument processing 11*9880d681SAndroid Build Coastguard Worker %ap = alloca i8* 12*9880d681SAndroid Build Coastguard Worker %ap2 = bitcast i8** %ap to i8* 13*9880d681SAndroid Build Coastguard Worker call void @llvm.va_start(i8* %ap2) 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker ; Read a single pointer argument 16*9880d681SAndroid Build Coastguard Worker %tmp = va_arg i8** %ap, i32* 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker ; Demonstrate usage of llvm.va_copy and llvm.va_end 19*9880d681SAndroid Build Coastguard Worker %aq = alloca i8* 20*9880d681SAndroid Build Coastguard Worker %aq2 = bitcast i8** %aq to i8* 21*9880d681SAndroid Build Coastguard Worker call void @llvm.va_copy(i8* %aq2, i8* %ap2) 22*9880d681SAndroid Build Coastguard Worker call void @llvm.va_end(i8* %aq2) 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker ; Stop processing of arguments. 25*9880d681SAndroid Build Coastguard Worker call void @llvm.va_end(i8* %ap2) 26*9880d681SAndroid Build Coastguard Worker ret i32* %tmp 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.va_start(i8*) 30*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.va_copy(i8*, i8*) 31*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.va_end(i8*) 32*9880d681SAndroid Build Coastguard Worker 33