brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · 8b99c01 Raw
111 lines · c
1// RUN: %clang_cc1 -DD128 -triple x86_64-apple-darwin -fextend-arguments=64  \2// RUN:            -Wno-strict-prototypes %s -emit-llvm -o - | FileCheck %s -check-prefix=CHECKEXT3 4// When the option isn't selected, no effect5// RUN: %clang_cc1 -DD128 -triple x86_64-apple-darwin  \6// RUN:            -Wno-strict-prototypes %s -emit-llvm -o - | FileCheck %s \7// RUN:    --implicit-check-not "ext {{.*}}to i64"8 9// The option isn't supported on x86, no effect10// RUN: %clang_cc1 -triple i386-pc-linux-gnu -fextend-arguments=64 \11// RUN:            -Wno-strict-prototypes %s -emit-llvm -o - | FileCheck %s \12// RUN:    --implicit-check-not "ext {{.*}}to i64"13 14// The option isn't supported on ppc, no effect15// RUN: %clang_cc1 -triple ppc64le -fextend-arguments=64 \16// RUN:            -Wno-strict-prototypes %s -emit-llvm -o - | FileCheck %s \17// RUN:    --implicit-check-not "ext {{.*}}to i64"18 19// The option isn't supported on ppc, no effect20// RUN: %clang_cc1 -DD128 -triple powerpc64-ibm-aix-xcoff -fextend-arguments=64 \21// RUN:            -Wno-strict-prototypes %s -emit-llvm -o - | FileCheck %s \22// RUN:    --implicit-check-not "ext {{.*}}to i64"23 24 25int vararg(int, ...);26void knr();27 28unsigned int u32;29int s32;30unsigned short u16;31short s16;32unsigned char u8;33signed char s8;34long long ll;35_BitInt(23) ei23;36float ff;37double dd;38#ifdef D12839__int128 i128;40#endif41 42int test(void) {43  // CHECK: define{{.*}} i32 @test{{.*}}44 45  // CHECKEXT:  [[TAG_u32:%.*]] = load i32, ptr @u32{{.*}}46  // CHECKEXT: [[CONV_u32:%.*]] = zext i32 [[TAG_u32]] to i6447 48  // CHECKEXT:  [[TAG_s32:%.*]] = load i32, ptr @s3249  // CHECKEXT: [[CONV_s32:%.*]] = sext i32 [[TAG_s32]] to i6450 51  // CHECKEXT:  [[TAG_u16:%.*]] = load i16, ptr @u1652  // CHECKEXT: [[CONV_u16:%.*]] = zext i16 [[TAG_u16]] to i6453 54  // CHECKEXT:  [[TAG_s16:%.*]] = load i16, ptr @s1655  // CHECKEXT: [[CONV_s16:%.*]] = sext i16 [[TAG_s16]] to i6456 57  // CHECKEXT:  [[TAG_u8:%.*]] = load i8, ptr @u858  // CHECKEXT: [[CONV_u8:%.*]] = zext i8 [[TAG_u8]] to i6459 60  // CHECKEXT:  [[TAG_s8:%.*]] = load i8, ptr @s861  // CHECKEXT: [[CONV_s8:%.*]] = sext i8 [[TAG_s8]] to i6462  // CHECKEXT: call{{.*}} @vararg(i32 noundef %0, i64 noundef [[CONV_u32]], i64 noundef [[CONV_s32]], i64 noundef [[CONV_u16]], i64 noundef [[CONV_s16]], i64 noundef [[CONV_u8]], i64 noundef [[CONV_s8]]63 64  int sum = 0;65  sum = vararg(sum, u32, s32, u16, s16, u8, s8);66  knr(ll);67  // CHECKEXT: load i64, ptr @ll68  // CHECKEXT-NEXT: call void (i64, ...) @knr69 70  knr(ei23);71  // CHECKEXT: load i32, ptr @ei2372  // CHECKEXT: trunc i3273  // CHECKEXT-NEXT: call void (i23, ...) @knr74 75  knr(ff);76  // CHECKEXT: load float77  // CHECKEXT-NEXT: fpext float {{.*}} to double78  // CHECKEXT-NEXT: call{{.*}} void (double, ...) @knr79 80  knr(dd);81  // CHECKEXT: load double82  // CHECKEXT-NEXT: call{{.*}} void (double, ...) @knr83 84#ifdef D12885  knr(i128);86  // CHECKEXT: load i12887  // CHECKEXT: call{{.*}} void (i128, ...) @knr88#endif89 90  knr(u32, s32, u16, s16, u8, s8);91  // CHECKEXT:  [[TAg_u32:%.*]] = load i32, ptr @u32{{.*}}92  // CHECKEXT: [[CONv_u32:%.*]] = zext i32 [[TAg_u32]] to i6493 94  // CHECKEXT:  [[TAg_s32:%.*]] = load i32, ptr @s3295  // CHECKEXT: [[CONv_s32:%.*]] = sext i32 [[TAg_s32]] to i6496 97  // CHECKEXT:  [[TAg_u16:%.*]] = load i16, ptr @u1698  // CHECKEXT: [[CONv_u16:%.*]] = zext i16 [[TAg_u16]] to i6499 100  // CHECKEXT:  [[TAg_s16:%.*]] = load i16, ptr @s16101  // CHECKEXT: [[CONv_s16:%.*]] = sext i16 [[TAg_s16]] to i64102 103  // CHECKEXT:  [[TAg_u8:%.*]] = load i8, ptr @u8104  // CHECKEXT: [[CONv_u8:%.*]] = zext i8 [[TAg_u8]] to i64105 106  // CHECKEXT:  [[TAg_s8:%.*]] = load i8, ptr @s8107  // CHECKEXT: [[CONv_s8:%.*]] = sext i8 [[TAg_s8]] to i64108  // CHECKEXT: call{{.*}} void (i64, i64, i64, i64, i64, i64, ...) @knr109  return sum;110}111