[clang] [test] Share patterns in CodeGen/ms_abi_aarch64.c between cases. NFC.

Differential Revision: https://reviews.llvm.org/D100468
This commit is contained in:
Martin Storsjö 2021-04-14 14:54:42 +03:00
parent efee57925c
commit ee570e2153
1 changed files with 10 additions and 20 deletions

View File

@ -18,8 +18,7 @@ void f3(void) {
// LINUX: call win64cc void @f1() // LINUX: call win64cc void @f1()
// WIN64: call void @f1() // WIN64: call void @f1()
f2(); f2();
// LINUX: call void @f2() // COMMON: call void @f2()
// WIN64: call void @f2()
} }
// LINUX: declare win64cc void @f1() // LINUX: declare win64cc void @f1()
// LINUX: declare void @f2() // LINUX: declare void @f2()
@ -32,28 +31,19 @@ void __attribute__((ms_abi)) f4(int a, ...) {
// WIN64-LABEL: define dso_local void @f4 // WIN64-LABEL: define dso_local void @f4
__builtin_ms_va_list ap; __builtin_ms_va_list ap;
__builtin_ms_va_start(ap, a); __builtin_ms_va_start(ap, a);
// LINUX: %[[AP:.*]] = alloca i8* // COMMON: %[[AP:.*]] = alloca i8*
// LINUX: call void @llvm.va_start // COMMON: call void @llvm.va_start
// WIN64: %[[AP:.*]] = alloca i8*
// WIN64: call void @llvm.va_start
int b = __builtin_va_arg(ap, int); int b = __builtin_va_arg(ap, int);
// LINUX: %[[AP_CUR:.*]] = load i8*, i8** %[[AP]] // COMMON: %[[AP_CUR:.*]] = load i8*, i8** %[[AP]]
// LINUX-NEXT: %[[AP_NEXT:.*]] = getelementptr inbounds i8, i8* %[[AP_CUR]], i64 8 // COMMON-NEXT: %[[AP_NEXT:.*]] = getelementptr inbounds i8, i8* %[[AP_CUR]], i64 8
// LINUX-NEXT: store i8* %[[AP_NEXT]], i8** %[[AP]] // COMMON-NEXT: store i8* %[[AP_NEXT]], i8** %[[AP]]
// LINUX-NEXT: bitcast i8* %[[AP_CUR]] to i32* // COMMON-NEXT: bitcast i8* %[[AP_CUR]] to i32*
// WIN64: %[[AP_CUR:.*]] = load i8*, i8** %[[AP]]
// WIN64-NEXT: %[[AP_NEXT:.*]] = getelementptr inbounds i8, i8* %[[AP_CUR]], i64 8
// WIN64-NEXT: store i8* %[[AP_NEXT]], i8** %[[AP]]
// WIN64-NEXT: bitcast i8* %[[AP_CUR]] to i32*
__builtin_ms_va_list ap2; __builtin_ms_va_list ap2;
__builtin_ms_va_copy(ap2, ap); __builtin_ms_va_copy(ap2, ap);
// LINUX: %[[AP_VAL:.*]] = load i8*, i8** %[[AP]] // COMMON: %[[AP_VAL:.*]] = load i8*, i8** %[[AP]]
// LINUX-NEXT: store i8* %[[AP_VAL]], i8** %[[AP2:.*]] // COMMON-NEXT: store i8* %[[AP_VAL]], i8** %[[AP2:.*]]
// WIN64: %[[AP_VAL:.*]] = load i8*, i8** %[[AP]]
// WIN64-NEXT: store i8* %[[AP_VAL]], i8** %[[AP2:.*]]
__builtin_ms_va_end(ap); __builtin_ms_va_end(ap);
// LINUX: call void @llvm.va_end // COMMON: call void @llvm.va_end
// WIN64: call void @llvm.va_end
} }
void __attribute__((ms_abi)) f4_2(int a, ...) { void __attribute__((ms_abi)) f4_2(int a, ...) {