Author: Erich Keane Date: 2020-04-29T12:20:21-07:00 New Revision: b5a4deec6a70da8a1024a2227be66f88e9276b08
URL: https://github.com/llvm/llvm-project/commit/b5a4deec6a70da8a1024a2227be66f88e9276b08 DIFF: https://github.com/llvm/llvm-project/commit/b5a4deec6a70da8a1024a2227be66f88e9276b08.diff LOG: [NFC] Split ext-int calling convention tests into their own file. I'm currently auditing all of the calling convention implications of _ExtInt for all platforms, so splitting them up into their own test will make this a much easier task to organize. Added: clang/test/CodeGen/ext-int-cc.c Modified: clang/test/CodeGen/ext-int.c Removed: ################################################################################ diff --git a/clang/test/CodeGen/ext-int-cc.c b/clang/test/CodeGen/ext-int-cc.c new file mode 100644 index 000000000000..41410be65497 --- /dev/null +++ b/clang/test/CodeGen/ext-int-cc.c @@ -0,0 +1,42 @@ +// RUN: %clang_cc1 -triple x86_64-gnu-linux -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=LIN64 +// RUN: %clang_cc1 -triple x86_64-windows-pc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=WIN64 +// RUN: %clang_cc1 -triple i386-gnu-linux -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=LIN32 +// RUN: %clang_cc1 -triple i386-windows-pc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=WIN32 + +// Make sure 128 and 64 bit versions are passed like integers, and that >128 +// is passed indirectly. +void ParamPassing(_ExtInt(129) a, _ExtInt(128) b, _ExtInt(64) c) {} +// LIN64: define void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}) +// WIN64: define dso_local void @ParamPassing(i129* %{{.+}}, i128* %{{.+}}, i64 %{{.+}}) +// LIN32: define void @ParamPassing(i129* %{{.+}}, i128* %{{.+}}, i64 %{{.+}}) +// WIN32: define dso_local void @ParamPassing(i129* %{{.+}}, i128* %{{.+}}, i64 %{{.+}}) +void ParamPassing2(_ExtInt(129) a, _ExtInt(127) b, _ExtInt(63) c) {} +// LIN64: define void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}) +// WIN64: define dso_local void @ParamPassing2(i129* %{{.+}}, i127* %{{.+}}, i63 %{{.+}}) +// LIN32: define void @ParamPassing2(i129* %{{.+}}, i127* %{{.+}}, i63 %{{.+}}) +// WIN32: define dso_local void @ParamPassing2(i129* %{{.+}}, i127* %{{.+}}, i63 %{{.+}}) +_ExtInt(63) ReturnPassing(){} +// LIN64: define i64 @ReturnPassing( +// WIN64: define dso_local i63 @ReturnPassing( +// LIN32: define i63 @ReturnPassing( +// WIN32: define dso_local i63 @ReturnPassing( +_ExtInt(64) ReturnPassing2(){} +// LIN64: define i64 @ReturnPassing2( +// WIN64: define dso_local i64 @ReturnPassing2( +// LIN32: define i64 @ReturnPassing2( +// WIN32: define dso_local i64 @ReturnPassing2( +_ExtInt(127) ReturnPassing3(){} +// LIN64: define { i64, i64 } @ReturnPassing3( +// WIN64: define dso_local void @ReturnPassing3(i127* noalias sret +// LIN32: define i127 @ReturnPassing3( +// WIN32: define dso_local i127 @ReturnPassing3( +_ExtInt(128) ReturnPassing4(){} +// LIN64: define { i64, i64 } @ReturnPassing4( +// WIN64: define dso_local void @ReturnPassing4(i128* noalias sret +// LIN32: define i128 @ReturnPassing4( +// WIN32: define dso_local i128 @ReturnPassing4( +_ExtInt(129) ReturnPassing5(){} +// LIN64: define void @ReturnPassing5(i129* noalias sret +// WIN64: define dso_local void @ReturnPassing5(i129* noalias sret +// LIN32: define i129 @ReturnPassing5( +// WIN32: define dso_local i129 @ReturnPassing5( diff --git a/clang/test/CodeGen/ext-int.c b/clang/test/CodeGen/ext-int.c index 8f90c0db27c7..196bb810b61a 100644 --- a/clang/test/CodeGen/ext-int.c +++ b/clang/test/CodeGen/ext-int.c @@ -1,8 +1,7 @@ -// RUN: %clang_cc1 -triple x86_64-gnu-linux -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,LIN64,CHECK64 -// RUN: %clang_cc1 -triple x86_64-windows-pc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,WIN64,CHECK64 -// RUN: %clang_cc1 -triple i386-gnu-linux -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,LIN32,CHECK32 -// RUNX: %clang_cc1 -triple i386-windows-pc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,WIN32,CHECK32 - +// RUN: %clang_cc1 -triple x86_64-gnu-linux -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK64 +// RUN: %clang_cc1 -triple x86_64-windows-pc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,CHECK64 +// RUN: %clang_cc1 -triple i386-gnu-linux -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,LIN32 +// RUN: %clang_cc1 -triple i386-windows-pc -O3 -disable-llvm-passes -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK,WIN32 void GenericTest(_ExtInt(3) a, unsigned _ExtInt(3) b, _ExtInt(4) c) { // CHECK: define {{.*}}void @GenericTest @@ -39,46 +38,10 @@ void OffsetOfTest() { // CHECK: store i32 0, i32* %{{.+}} int B = __builtin_offsetof(struct S,B); // CHECK64: store i32 8, i32* %{{.+}} - // CHECK32: store i32 4, i32* %{{.+}} + // LIN32: store i32 4, i32* %{{.+}} + // WINCHECK32: store i32 8, i32* %{{.+}} int C = __builtin_offsetof(struct S,C); // CHECK64: store i32 2097160, i32* %{{.+}} - // CHECK32: store i32 2097156, i32* %{{.+}} + // LIN32: store i32 2097156, i32* %{{.+}} + // WIN32: store i32 2097160, i32* %{{.+}} } - -// Make sure 128 and 64 bit versions are passed like integers, and that >128 -// is passed indirectly. -void ParamPassing(_ExtInt(129) a, _ExtInt(128) b, _ExtInt(64) c) {} -// LIN64: define void @ParamPassing(i129* byval(i129) align 8 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}) -// WIN64: define dso_local void @ParamPassing(i129* %{{.+}}, i128* %{{.+}}, i64 %{{.+}}) -// LIN32: define void @ParamPassing(i129* %{{.+}}, i128* %{{.+}}, i64 %{{.+}}) -// WIN32: define dso_local void @ParamPassing(i129* %{{.+}}, i128* %{{.+}}, i64 %{{.+}}) -void ParamPassing2(_ExtInt(129) a, _ExtInt(127) b, _ExtInt(63) c) {} -// LIN64: define void @ParamPassing2(i129* byval(i129) align 8 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}, i64 %{{.+}}) -// WIN64: define dso_local void @ParamPassing2(i129* %{{.+}}, i127* %{{.+}}, i63 %{{.+}}) -// LIN32: define void @ParamPassing2(i129* %{{.+}}, i127* %{{.+}}, i63 %{{.+}}) -// WIN32: define dso_local void @ParamPassing2(i129* %{{.+}}, i127* %{{.+}}, i63 %{{.+}}) -_ExtInt(63) ReturnPassing(){} -// LIN64: define i64 @ReturnPassing( -// WIN64: define dso_local i63 @ReturnPassing( -// LIN32: define i63 @ReturnPassing( -// WIN32: define dso_local i64 @ReturnPassing( -_ExtInt(64) ReturnPassing2(){} -// LIN64: define i64 @ReturnPassing2( -// WIN64: define dso_local i64 @ReturnPassing2( -// LIN32: define i64 @ReturnPassing2( -// WIN32: define dso_local i64 @ReturnPassing2( -_ExtInt(127) ReturnPassing3(){} -// LIN64: define { i64, i64 } @ReturnPassing3( -// WIN64: define dso_local void @ReturnPassing3(i127* noalias sret -// LIN32: define i127 @ReturnPassing3( -// WIN32: define dso_local i127 @ReturnPassing3( -_ExtInt(128) ReturnPassing4(){} -// LIN64: define { i64, i64 } @ReturnPassing4( -// WIN64: define dso_local void @ReturnPassing4(i128* noalias sret -// LIN32: define i128 @ReturnPassing4( -// WIN32: define dso_local i64 @ReturnPassing4( -_ExtInt(129) ReturnPassing5(){} -// LIN64: define void @ReturnPassing5(i129* noalias sret -// WIN64: define dso_local void @ReturnPassing5(i129* noalias sret -// LIN32: define i129 @ReturnPassing5( -// WIN32: define dso_local i129 @ReturnPassing5( _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits