[OpenMP] Use CreatePtrDiff() (#184127)
This will use ptrtoaddr instead of ptrtoint in the pointer difference calculation, avoiding unnecessary provenance exposure. Add an IsNUW flag to allow specifying nuw on the subtraction.
This commit is contained in:
parent
eb8f171629
commit
cca5bb52f3
@ -3729,9 +3729,7 @@ getPointerAndSize(CodeGenFunction &CGF, const Expr *E) {
|
||||
llvm::Value *UpAddr = CGF.Builder.CreateConstGEP1_32(
|
||||
UpAddrAddress.getElementType(), UpAddrAddress.emitRawPointer(CGF),
|
||||
/*Idx0=*/1);
|
||||
llvm::Value *LowIntPtr = CGF.Builder.CreatePtrToInt(Addr, CGF.SizeTy);
|
||||
llvm::Value *UpIntPtr = CGF.Builder.CreatePtrToInt(UpAddr, CGF.SizeTy);
|
||||
SizeVal = CGF.Builder.CreateNUWSub(UpIntPtr, LowIntPtr);
|
||||
SizeVal = CGF.Builder.CreatePtrDiff(UpAddr, Addr, "", /*IsNUW=*/true);
|
||||
} else {
|
||||
SizeVal = CGF.getTypeSize(Ty);
|
||||
}
|
||||
|
||||
@ -204,23 +204,23 @@ int main() {
|
||||
// CHECK1-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[AGG_CAPTURED:%.*]] = alloca [[STRUCT_ANON:%.*]], align 8
|
||||
// CHECK1-NEXT: [[DOTAFFS_ARR_ADDR:%.*]] = alloca [1 x %struct.kmp_task_affinity_info_t], align 8
|
||||
// CHECK1-NEXT: [[DOTAFFS_ARR_ADDR:%.*]] = alloca [1 x [[STRUCT_KMP_TASK_AFFINITY_INFO_T:%.*]]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK1-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[STRUCT_ANON]], ptr [[AGG_CAPTURED]], i32 0, i32 0
|
||||
// CHECK1-NEXT: store ptr [[B_ADDR]], ptr [[TMP1]], align 8
|
||||
// CHECK1-NEXT: [[TMP2:%.*]] = call ptr @__kmpc_omp_task_alloc(ptr @[[GLOB1]], i32 [[TMP0]], i32 1, i64 48, i64 8, ptr @.omp_task_entry.)
|
||||
// CHECK1-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x %struct.kmp_task_affinity_info_t], ptr [[DOTAFFS_ARR_ADDR]], i64 0, i64 0
|
||||
// CHECK1-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x [[STRUCT_KMP_TASK_AFFINITY_INFO_T]]], ptr [[DOTAFFS_ARR_ADDR]], i64 0, i64 0
|
||||
// CHECK1-NEXT: [[TMP4:%.*]] = load ptr, ptr [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP4]], i64 0
|
||||
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr [[A_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[ARRAYIDX1:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP5]], i64 1023
|
||||
// CHECK1-NEXT: [[TMP6:%.*]] = getelementptr i32, ptr [[ARRAYIDX1]], i32 1
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP6]] to i64
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = sub nuw i64 [[TMP8]], [[TMP7]]
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = getelementptr [[STRUCT_KMP_TASK_AFFINITY_INFO_T:%.*]], ptr [[TMP3]], i64 0
|
||||
// CHECK1-NEXT: [[TMP7:%.*]] = ptrtoaddr ptr [[TMP6]] to i64
|
||||
// CHECK1-NEXT: [[TMP8:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i64
|
||||
// CHECK1-NEXT: [[TMP9:%.*]] = sub nuw i64 [[TMP7]], [[TMP8]]
|
||||
// CHECK1-NEXT: [[TMP10:%.*]] = getelementptr [[STRUCT_KMP_TASK_AFFINITY_INFO_T]], ptr [[TMP3]], i64 0
|
||||
// CHECK1-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_TASK_AFFINITY_INFO_T]], ptr [[TMP10]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP12:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK1-NEXT: store i64 [[TMP12]], ptr [[TMP11]], align 8
|
||||
@ -439,23 +439,23 @@ int main() {
|
||||
// CHECK3-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[AGG_CAPTURED:%.*]] = alloca [[STRUCT_ANON:%.*]], align 4
|
||||
// CHECK3-NEXT: [[DOTAFFS_ARR_ADDR:%.*]] = alloca [1 x %struct.kmp_task_affinity_info_t], align 4
|
||||
// CHECK3-NEXT: [[DOTAFFS_ARR_ADDR:%.*]] = alloca [1 x [[STRUCT_KMP_TASK_AFFINITY_INFO_T:%.*]]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]])
|
||||
// CHECK3-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[STRUCT_ANON]], ptr [[AGG_CAPTURED]], i32 0, i32 0
|
||||
// CHECK3-NEXT: store ptr [[B_ADDR]], ptr [[TMP1]], align 4
|
||||
// CHECK3-NEXT: [[TMP2:%.*]] = call ptr @__kmpc_omp_task_alloc(ptr @[[GLOB1]], i32 [[TMP0]], i32 1, i32 24, i32 4, ptr @.omp_task_entry.)
|
||||
// CHECK3-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x %struct.kmp_task_affinity_info_t], ptr [[DOTAFFS_ARR_ADDR]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x [[STRUCT_KMP_TASK_AFFINITY_INFO_T]]], ptr [[DOTAFFS_ARR_ADDR]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP4:%.*]] = load ptr, ptr [[A_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP4]], i32 0
|
||||
// CHECK3-NEXT: [[TMP5:%.*]] = load ptr, ptr [[A_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[ARRAYIDX1:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP5]], i32 1023
|
||||
// CHECK3-NEXT: [[TMP6:%.*]] = getelementptr i32, ptr [[ARRAYIDX1]], i32 1
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i32
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP6]] to i32
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = sub nuw i32 [[TMP8]], [[TMP7]]
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = getelementptr [[STRUCT_KMP_TASK_AFFINITY_INFO_T:%.*]], ptr [[TMP3]], i32 0
|
||||
// CHECK3-NEXT: [[TMP7:%.*]] = ptrtoaddr ptr [[TMP6]] to i32
|
||||
// CHECK3-NEXT: [[TMP8:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i32
|
||||
// CHECK3-NEXT: [[TMP9:%.*]] = sub nuw i32 [[TMP7]], [[TMP8]]
|
||||
// CHECK3-NEXT: [[TMP10:%.*]] = getelementptr [[STRUCT_KMP_TASK_AFFINITY_INFO_T]], ptr [[TMP3]], i32 0
|
||||
// CHECK3-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_TASK_AFFINITY_INFO_T]], ptr [[TMP10]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP12:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i32
|
||||
// CHECK3-NEXT: store i32 [[TMP12]], ptr [[TMP11]], align 4
|
||||
@ -628,7 +628,7 @@ int main() {
|
||||
// CHECK9-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[AGG_CAPTURED:%.*]] = alloca [[STRUCT_ANON:%.*]], align 8
|
||||
// CHECK9-NEXT: [[DOTAFFS_ARR_ADDR:%.*]] = alloca [1 x %struct.kmp_task_affinity_info_t], align 8
|
||||
// CHECK9-NEXT: [[DOTAFFS_ARR_ADDR:%.*]] = alloca [1 x [[STRUCT_KMP_TASK_AFFINITY_INFO_T:%.*]]], align 8
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1:[0-9]+]])
|
||||
// CHECK9-NEXT: store ptr [[DYN_PTR]], ptr [[DYN_PTR_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 8
|
||||
@ -636,16 +636,16 @@ int main() {
|
||||
// CHECK9-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[STRUCT_ANON]], ptr [[AGG_CAPTURED]], i32 0, i32 0
|
||||
// CHECK9-NEXT: store ptr [[B_ADDR]], ptr [[TMP1]], align 8
|
||||
// CHECK9-NEXT: [[TMP2:%.*]] = call ptr @__kmpc_omp_task_alloc(ptr @[[GLOB1]], i32 [[TMP0]], i32 1, i64 48, i64 8, ptr @.omp_task_entry.)
|
||||
// CHECK9-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x %struct.kmp_task_affinity_info_t], ptr [[DOTAFFS_ARR_ADDR]], i64 0, i64 0
|
||||
// CHECK9-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x [[STRUCT_KMP_TASK_AFFINITY_INFO_T]]], ptr [[DOTAFFS_ARR_ADDR]], i64 0, i64 0
|
||||
// CHECK9-NEXT: [[TMP4:%.*]] = load ptr, ptr [[A_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP4]], i64 0
|
||||
// CHECK9-NEXT: [[TMP5:%.*]] = load ptr, ptr [[A_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[ARRAYIDX1:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP5]], i64 1023
|
||||
// CHECK9-NEXT: [[TMP6:%.*]] = getelementptr i32, ptr [[ARRAYIDX1]], i32 1
|
||||
// CHECK9-NEXT: [[TMP7:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK9-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP6]] to i64
|
||||
// CHECK9-NEXT: [[TMP9:%.*]] = sub nuw i64 [[TMP8]], [[TMP7]]
|
||||
// CHECK9-NEXT: [[TMP10:%.*]] = getelementptr [[STRUCT_KMP_TASK_AFFINITY_INFO_T:%.*]], ptr [[TMP3]], i64 0
|
||||
// CHECK9-NEXT: [[TMP7:%.*]] = ptrtoaddr ptr [[TMP6]] to i64
|
||||
// CHECK9-NEXT: [[TMP8:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i64
|
||||
// CHECK9-NEXT: [[TMP9:%.*]] = sub nuw i64 [[TMP7]], [[TMP8]]
|
||||
// CHECK9-NEXT: [[TMP10:%.*]] = getelementptr [[STRUCT_KMP_TASK_AFFINITY_INFO_T]], ptr [[TMP3]], i64 0
|
||||
// CHECK9-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_TASK_AFFINITY_INFO_T]], ptr [[TMP10]], i32 0, i32 0
|
||||
// CHECK9-NEXT: [[TMP12:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK9-NEXT: store i64 [[TMP12]], ptr [[TMP11]], align 8
|
||||
@ -750,7 +750,7 @@ int main() {
|
||||
// CHECK11-NEXT: [[B_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: [[A_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: [[AGG_CAPTURED:%.*]] = alloca [[STRUCT_ANON:%.*]], align 4
|
||||
// CHECK11-NEXT: [[DOTAFFS_ARR_ADDR:%.*]] = alloca [1 x %struct.kmp_task_affinity_info_t], align 4
|
||||
// CHECK11-NEXT: [[DOTAFFS_ARR_ADDR:%.*]] = alloca [1 x [[STRUCT_KMP_TASK_AFFINITY_INFO_T:%.*]]], align 4
|
||||
// CHECK11-NEXT: [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1:[0-9]+]])
|
||||
// CHECK11-NEXT: store ptr [[DYN_PTR]], ptr [[DYN_PTR_ADDR]], align 4
|
||||
// CHECK11-NEXT: store ptr [[B]], ptr [[B_ADDR]], align 4
|
||||
@ -758,16 +758,16 @@ int main() {
|
||||
// CHECK11-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[STRUCT_ANON]], ptr [[AGG_CAPTURED]], i32 0, i32 0
|
||||
// CHECK11-NEXT: store ptr [[B_ADDR]], ptr [[TMP1]], align 4
|
||||
// CHECK11-NEXT: [[TMP2:%.*]] = call ptr @__kmpc_omp_task_alloc(ptr @[[GLOB1]], i32 [[TMP0]], i32 1, i32 24, i32 4, ptr @.omp_task_entry.)
|
||||
// CHECK11-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x %struct.kmp_task_affinity_info_t], ptr [[DOTAFFS_ARR_ADDR]], i32 0, i32 0
|
||||
// CHECK11-NEXT: [[TMP3:%.*]] = getelementptr inbounds [1 x [[STRUCT_KMP_TASK_AFFINITY_INFO_T]]], ptr [[DOTAFFS_ARR_ADDR]], i32 0, i32 0
|
||||
// CHECK11-NEXT: [[TMP4:%.*]] = load ptr, ptr [[A_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP4]], i32 0
|
||||
// CHECK11-NEXT: [[TMP5:%.*]] = load ptr, ptr [[A_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[ARRAYIDX1:%.*]] = getelementptr inbounds nuw i32, ptr [[TMP5]], i32 1023
|
||||
// CHECK11-NEXT: [[TMP6:%.*]] = getelementptr i32, ptr [[ARRAYIDX1]], i32 1
|
||||
// CHECK11-NEXT: [[TMP7:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i32
|
||||
// CHECK11-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[TMP6]] to i32
|
||||
// CHECK11-NEXT: [[TMP9:%.*]] = sub nuw i32 [[TMP8]], [[TMP7]]
|
||||
// CHECK11-NEXT: [[TMP10:%.*]] = getelementptr [[STRUCT_KMP_TASK_AFFINITY_INFO_T:%.*]], ptr [[TMP3]], i32 0
|
||||
// CHECK11-NEXT: [[TMP7:%.*]] = ptrtoaddr ptr [[TMP6]] to i32
|
||||
// CHECK11-NEXT: [[TMP8:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i32
|
||||
// CHECK11-NEXT: [[TMP9:%.*]] = sub nuw i32 [[TMP7]], [[TMP8]]
|
||||
// CHECK11-NEXT: [[TMP10:%.*]] = getelementptr [[STRUCT_KMP_TASK_AFFINITY_INFO_T]], ptr [[TMP3]], i32 0
|
||||
// CHECK11-NEXT: [[TMP11:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_TASK_AFFINITY_INFO_T]], ptr [[TMP10]], i32 0, i32 0
|
||||
// CHECK11-NEXT: [[TMP12:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i32
|
||||
// CHECK11-NEXT: store i32 [[TMP12]], ptr [[TMP11]], align 4
|
||||
|
||||
@ -367,9 +367,9 @@ void test_transparent()
|
||||
// CHECK1-NEXT: [[TMP35:%.*]] = mul nsw i64 9, [[TMP2]]
|
||||
// CHECK1-NEXT: [[ARRAYIDX2:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP35]]
|
||||
// CHECK1-NEXT: [[TMP36:%.*]] = getelementptr i32, ptr [[ARRAYIDX2]], i32 1
|
||||
// CHECK1-NEXT: [[TMP37:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK1-NEXT: [[TMP38:%.*]] = ptrtoint ptr [[TMP36]] to i64
|
||||
// CHECK1-NEXT: [[TMP39:%.*]] = sub nuw i64 [[TMP38]], [[TMP37]]
|
||||
// CHECK1-NEXT: [[TMP37:%.*]] = ptrtoaddr ptr [[TMP36]] to i64
|
||||
// CHECK1-NEXT: [[TMP38:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i64
|
||||
// CHECK1-NEXT: [[TMP39:%.*]] = sub nuw i64 [[TMP37]], [[TMP38]]
|
||||
// CHECK1-NEXT: [[TMP40:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK1-NEXT: [[TMP41:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP19]], i64 3
|
||||
// CHECK1-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP41]], i32 0, i32 0
|
||||
@ -408,9 +408,9 @@ void test_transparent()
|
||||
// CHECK1-NEXT: [[ARRAYIDX9:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP63]]
|
||||
// CHECK1-NEXT: [[ARRAYIDX10:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX9]], i64 [[TMP62]]
|
||||
// CHECK1-NEXT: [[TMP64:%.*]] = getelementptr i32, ptr [[ARRAYIDX10]], i32 1
|
||||
// CHECK1-NEXT: [[TMP65:%.*]] = ptrtoint ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK1-NEXT: [[TMP66:%.*]] = ptrtoint ptr [[TMP64]] to i64
|
||||
// CHECK1-NEXT: [[TMP67:%.*]] = sub nuw i64 [[TMP66]], [[TMP65]]
|
||||
// CHECK1-NEXT: [[TMP65:%.*]] = ptrtoaddr ptr [[TMP64]] to i64
|
||||
// CHECK1-NEXT: [[TMP66:%.*]] = ptrtoaddr ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK1-NEXT: [[TMP67:%.*]] = sub nuw i64 [[TMP65]], [[TMP66]]
|
||||
// CHECK1-NEXT: [[TMP68:%.*]] = ptrtoint ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK1-NEXT: [[TMP69:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP52]], i64 1
|
||||
// CHECK1-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP69]], i32 0, i32 0
|
||||
@ -446,9 +446,9 @@ void test_transparent()
|
||||
// CHECK1-NEXT: [[ARRAYIDX17:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP88]]
|
||||
// CHECK1-NEXT: [[ARRAYIDX18:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX17]], i64 [[TMP87]]
|
||||
// CHECK1-NEXT: [[TMP89:%.*]] = getelementptr i32, ptr [[ARRAYIDX18]], i32 1
|
||||
// CHECK1-NEXT: [[TMP90:%.*]] = ptrtoint ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK1-NEXT: [[TMP91:%.*]] = ptrtoint ptr [[TMP89]] to i64
|
||||
// CHECK1-NEXT: [[TMP92:%.*]] = sub nuw i64 [[TMP91]], [[TMP90]]
|
||||
// CHECK1-NEXT: [[TMP90:%.*]] = ptrtoaddr ptr [[TMP89]] to i64
|
||||
// CHECK1-NEXT: [[TMP91:%.*]] = ptrtoaddr ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK1-NEXT: [[TMP92:%.*]] = sub nuw i64 [[TMP90]], [[TMP91]]
|
||||
// CHECK1-NEXT: [[TMP93:%.*]] = ptrtoint ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK1-NEXT: [[TMP94:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP77]], i64 1
|
||||
// CHECK1-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP94]], i32 0, i32 0
|
||||
@ -493,9 +493,9 @@ void test_transparent()
|
||||
// CHECK1-NEXT: [[ARRAYIDX25:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP117]]
|
||||
// CHECK1-NEXT: [[ARRAYIDX26:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX25]], i64 [[LEN_SUB_1]]
|
||||
// CHECK1-NEXT: [[TMP118:%.*]] = getelementptr i32, ptr [[ARRAYIDX26]], i32 1
|
||||
// CHECK1-NEXT: [[TMP119:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK1-NEXT: [[TMP120:%.*]] = ptrtoint ptr [[TMP118]] to i64
|
||||
// CHECK1-NEXT: [[TMP121:%.*]] = sub nuw i64 [[TMP120]], [[TMP119]]
|
||||
// CHECK1-NEXT: [[TMP119:%.*]] = ptrtoaddr ptr [[TMP118]] to i64
|
||||
// CHECK1-NEXT: [[TMP120:%.*]] = ptrtoaddr ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK1-NEXT: [[TMP121:%.*]] = sub nuw i64 [[TMP119]], [[TMP120]]
|
||||
// CHECK1-NEXT: [[TMP122:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK1-NEXT: [[TMP123:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP102]], i64 2
|
||||
// CHECK1-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP123]], i32 0, i32 0
|
||||
@ -1490,9 +1490,9 @@ void test_transparent()
|
||||
// CHECK1-51-NEXT: [[TMP35:%.*]] = mul nsw i64 9, [[TMP2]]
|
||||
// CHECK1-51-NEXT: [[ARRAYIDX2:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP35]]
|
||||
// CHECK1-51-NEXT: [[TMP36:%.*]] = getelementptr i32, ptr [[ARRAYIDX2]], i32 1
|
||||
// CHECK1-51-NEXT: [[TMP37:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP38:%.*]] = ptrtoint ptr [[TMP36]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP39:%.*]] = sub nuw i64 [[TMP38]], [[TMP37]]
|
||||
// CHECK1-51-NEXT: [[TMP37:%.*]] = ptrtoaddr ptr [[TMP36]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP38:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP39:%.*]] = sub nuw i64 [[TMP37]], [[TMP38]]
|
||||
// CHECK1-51-NEXT: [[TMP40:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP41:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP19]], i64 3
|
||||
// CHECK1-51-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP41]], i32 0, i32 0
|
||||
@ -1531,9 +1531,9 @@ void test_transparent()
|
||||
// CHECK1-51-NEXT: [[ARRAYIDX9:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP63]]
|
||||
// CHECK1-51-NEXT: [[ARRAYIDX10:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX9]], i64 [[TMP62]]
|
||||
// CHECK1-51-NEXT: [[TMP64:%.*]] = getelementptr i32, ptr [[ARRAYIDX10]], i32 1
|
||||
// CHECK1-51-NEXT: [[TMP65:%.*]] = ptrtoint ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP66:%.*]] = ptrtoint ptr [[TMP64]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP67:%.*]] = sub nuw i64 [[TMP66]], [[TMP65]]
|
||||
// CHECK1-51-NEXT: [[TMP65:%.*]] = ptrtoaddr ptr [[TMP64]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP66:%.*]] = ptrtoaddr ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP67:%.*]] = sub nuw i64 [[TMP65]], [[TMP66]]
|
||||
// CHECK1-51-NEXT: [[TMP68:%.*]] = ptrtoint ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP69:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP52]], i64 1
|
||||
// CHECK1-51-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP69]], i32 0, i32 0
|
||||
@ -1569,9 +1569,9 @@ void test_transparent()
|
||||
// CHECK1-51-NEXT: [[ARRAYIDX17:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP88]]
|
||||
// CHECK1-51-NEXT: [[ARRAYIDX18:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX17]], i64 [[TMP87]]
|
||||
// CHECK1-51-NEXT: [[TMP89:%.*]] = getelementptr i32, ptr [[ARRAYIDX18]], i32 1
|
||||
// CHECK1-51-NEXT: [[TMP90:%.*]] = ptrtoint ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP91:%.*]] = ptrtoint ptr [[TMP89]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP92:%.*]] = sub nuw i64 [[TMP91]], [[TMP90]]
|
||||
// CHECK1-51-NEXT: [[TMP90:%.*]] = ptrtoaddr ptr [[TMP89]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP91:%.*]] = ptrtoaddr ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP92:%.*]] = sub nuw i64 [[TMP90]], [[TMP91]]
|
||||
// CHECK1-51-NEXT: [[TMP93:%.*]] = ptrtoint ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP94:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP77]], i64 1
|
||||
// CHECK1-51-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP94]], i32 0, i32 0
|
||||
@ -1616,9 +1616,9 @@ void test_transparent()
|
||||
// CHECK1-51-NEXT: [[ARRAYIDX25:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP117]]
|
||||
// CHECK1-51-NEXT: [[ARRAYIDX26:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX25]], i64 [[LEN_SUB_1]]
|
||||
// CHECK1-51-NEXT: [[TMP118:%.*]] = getelementptr i32, ptr [[ARRAYIDX26]], i32 1
|
||||
// CHECK1-51-NEXT: [[TMP119:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP120:%.*]] = ptrtoint ptr [[TMP118]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP121:%.*]] = sub nuw i64 [[TMP120]], [[TMP119]]
|
||||
// CHECK1-51-NEXT: [[TMP119:%.*]] = ptrtoaddr ptr [[TMP118]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP120:%.*]] = ptrtoaddr ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP121:%.*]] = sub nuw i64 [[TMP119]], [[TMP120]]
|
||||
// CHECK1-51-NEXT: [[TMP122:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP123:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP102]], i64 2
|
||||
// CHECK1-51-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP123]], i32 0, i32 0
|
||||
@ -1661,9 +1661,9 @@ void test_transparent()
|
||||
// CHECK1-51-NEXT: [[ARRAYIDX35:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP145]]
|
||||
// CHECK1-51-NEXT: [[ARRAYIDX36:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX35]], i64 [[LEN_SUB_133]]
|
||||
// CHECK1-51-NEXT: [[TMP146:%.*]] = getelementptr i32, ptr [[ARRAYIDX36]], i32 1
|
||||
// CHECK1-51-NEXT: [[TMP147:%.*]] = ptrtoint ptr [[ARRAYIDX32]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP148:%.*]] = ptrtoint ptr [[TMP146]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP149:%.*]] = sub nuw i64 [[TMP148]], [[TMP147]]
|
||||
// CHECK1-51-NEXT: [[TMP147:%.*]] = ptrtoaddr ptr [[TMP146]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP148:%.*]] = ptrtoaddr ptr [[ARRAYIDX32]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP149:%.*]] = sub nuw i64 [[TMP147]], [[TMP148]]
|
||||
// CHECK1-51-NEXT: [[TMP150:%.*]] = ptrtoint ptr [[ARRAYIDX32]] to i64
|
||||
// CHECK1-51-NEXT: [[TMP151:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP130]], i64 2
|
||||
// CHECK1-51-NEXT: [[TMP152:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP151]], i32 0, i32 0
|
||||
@ -3098,9 +3098,9 @@ void test_transparent()
|
||||
// CHECK2-NEXT: [[TMP35:%.*]] = mul nsw i64 9, [[TMP2]]
|
||||
// CHECK2-NEXT: [[ARRAYIDX2:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP35]]
|
||||
// CHECK2-NEXT: [[TMP36:%.*]] = getelementptr i32, ptr [[ARRAYIDX2]], i32 1
|
||||
// CHECK2-NEXT: [[TMP37:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK2-NEXT: [[TMP38:%.*]] = ptrtoint ptr [[TMP36]] to i64
|
||||
// CHECK2-NEXT: [[TMP39:%.*]] = sub nuw i64 [[TMP38]], [[TMP37]]
|
||||
// CHECK2-NEXT: [[TMP37:%.*]] = ptrtoaddr ptr [[TMP36]] to i64
|
||||
// CHECK2-NEXT: [[TMP38:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i64
|
||||
// CHECK2-NEXT: [[TMP39:%.*]] = sub nuw i64 [[TMP37]], [[TMP38]]
|
||||
// CHECK2-NEXT: [[TMP40:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK2-NEXT: [[TMP41:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP19]], i64 3
|
||||
// CHECK2-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP41]], i32 0, i32 0
|
||||
@ -3139,9 +3139,9 @@ void test_transparent()
|
||||
// CHECK2-NEXT: [[ARRAYIDX9:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP63]]
|
||||
// CHECK2-NEXT: [[ARRAYIDX10:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX9]], i64 [[TMP62]]
|
||||
// CHECK2-NEXT: [[TMP64:%.*]] = getelementptr i32, ptr [[ARRAYIDX10]], i32 1
|
||||
// CHECK2-NEXT: [[TMP65:%.*]] = ptrtoint ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK2-NEXT: [[TMP66:%.*]] = ptrtoint ptr [[TMP64]] to i64
|
||||
// CHECK2-NEXT: [[TMP67:%.*]] = sub nuw i64 [[TMP66]], [[TMP65]]
|
||||
// CHECK2-NEXT: [[TMP65:%.*]] = ptrtoaddr ptr [[TMP64]] to i64
|
||||
// CHECK2-NEXT: [[TMP66:%.*]] = ptrtoaddr ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK2-NEXT: [[TMP67:%.*]] = sub nuw i64 [[TMP65]], [[TMP66]]
|
||||
// CHECK2-NEXT: [[TMP68:%.*]] = ptrtoint ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK2-NEXT: [[TMP69:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP52]], i64 1
|
||||
// CHECK2-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP69]], i32 0, i32 0
|
||||
@ -3177,9 +3177,9 @@ void test_transparent()
|
||||
// CHECK2-NEXT: [[ARRAYIDX17:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP88]]
|
||||
// CHECK2-NEXT: [[ARRAYIDX18:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX17]], i64 [[TMP87]]
|
||||
// CHECK2-NEXT: [[TMP89:%.*]] = getelementptr i32, ptr [[ARRAYIDX18]], i32 1
|
||||
// CHECK2-NEXT: [[TMP90:%.*]] = ptrtoint ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK2-NEXT: [[TMP91:%.*]] = ptrtoint ptr [[TMP89]] to i64
|
||||
// CHECK2-NEXT: [[TMP92:%.*]] = sub nuw i64 [[TMP91]], [[TMP90]]
|
||||
// CHECK2-NEXT: [[TMP90:%.*]] = ptrtoaddr ptr [[TMP89]] to i64
|
||||
// CHECK2-NEXT: [[TMP91:%.*]] = ptrtoaddr ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK2-NEXT: [[TMP92:%.*]] = sub nuw i64 [[TMP90]], [[TMP91]]
|
||||
// CHECK2-NEXT: [[TMP93:%.*]] = ptrtoint ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK2-NEXT: [[TMP94:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP77]], i64 1
|
||||
// CHECK2-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP94]], i32 0, i32 0
|
||||
@ -3224,9 +3224,9 @@ void test_transparent()
|
||||
// CHECK2-NEXT: [[ARRAYIDX25:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP117]]
|
||||
// CHECK2-NEXT: [[ARRAYIDX26:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX25]], i64 [[LEN_SUB_1]]
|
||||
// CHECK2-NEXT: [[TMP118:%.*]] = getelementptr i32, ptr [[ARRAYIDX26]], i32 1
|
||||
// CHECK2-NEXT: [[TMP119:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK2-NEXT: [[TMP120:%.*]] = ptrtoint ptr [[TMP118]] to i64
|
||||
// CHECK2-NEXT: [[TMP121:%.*]] = sub nuw i64 [[TMP120]], [[TMP119]]
|
||||
// CHECK2-NEXT: [[TMP119:%.*]] = ptrtoaddr ptr [[TMP118]] to i64
|
||||
// CHECK2-NEXT: [[TMP120:%.*]] = ptrtoaddr ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK2-NEXT: [[TMP121:%.*]] = sub nuw i64 [[TMP119]], [[TMP120]]
|
||||
// CHECK2-NEXT: [[TMP122:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK2-NEXT: [[TMP123:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP102]], i64 2
|
||||
// CHECK2-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP123]], i32 0, i32 0
|
||||
@ -4221,9 +4221,9 @@ void test_transparent()
|
||||
// CHECK2-51-NEXT: [[TMP35:%.*]] = mul nsw i64 9, [[TMP2]]
|
||||
// CHECK2-51-NEXT: [[ARRAYIDX2:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP35]]
|
||||
// CHECK2-51-NEXT: [[TMP36:%.*]] = getelementptr i32, ptr [[ARRAYIDX2]], i32 1
|
||||
// CHECK2-51-NEXT: [[TMP37:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP38:%.*]] = ptrtoint ptr [[TMP36]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP39:%.*]] = sub nuw i64 [[TMP38]], [[TMP37]]
|
||||
// CHECK2-51-NEXT: [[TMP37:%.*]] = ptrtoaddr ptr [[TMP36]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP38:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP39:%.*]] = sub nuw i64 [[TMP37]], [[TMP38]]
|
||||
// CHECK2-51-NEXT: [[TMP40:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP41:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP19]], i64 3
|
||||
// CHECK2-51-NEXT: [[TMP42:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP41]], i32 0, i32 0
|
||||
@ -4262,9 +4262,9 @@ void test_transparent()
|
||||
// CHECK2-51-NEXT: [[ARRAYIDX9:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP63]]
|
||||
// CHECK2-51-NEXT: [[ARRAYIDX10:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX9]], i64 [[TMP62]]
|
||||
// CHECK2-51-NEXT: [[TMP64:%.*]] = getelementptr i32, ptr [[ARRAYIDX10]], i32 1
|
||||
// CHECK2-51-NEXT: [[TMP65:%.*]] = ptrtoint ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP66:%.*]] = ptrtoint ptr [[TMP64]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP67:%.*]] = sub nuw i64 [[TMP66]], [[TMP65]]
|
||||
// CHECK2-51-NEXT: [[TMP65:%.*]] = ptrtoaddr ptr [[TMP64]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP66:%.*]] = ptrtoaddr ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP67:%.*]] = sub nuw i64 [[TMP65]], [[TMP66]]
|
||||
// CHECK2-51-NEXT: [[TMP68:%.*]] = ptrtoint ptr [[ARRAYIDX8]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP69:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP52]], i64 1
|
||||
// CHECK2-51-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP69]], i32 0, i32 0
|
||||
@ -4300,9 +4300,9 @@ void test_transparent()
|
||||
// CHECK2-51-NEXT: [[ARRAYIDX17:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP88]]
|
||||
// CHECK2-51-NEXT: [[ARRAYIDX18:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX17]], i64 [[TMP87]]
|
||||
// CHECK2-51-NEXT: [[TMP89:%.*]] = getelementptr i32, ptr [[ARRAYIDX18]], i32 1
|
||||
// CHECK2-51-NEXT: [[TMP90:%.*]] = ptrtoint ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP91:%.*]] = ptrtoint ptr [[TMP89]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP92:%.*]] = sub nuw i64 [[TMP91]], [[TMP90]]
|
||||
// CHECK2-51-NEXT: [[TMP90:%.*]] = ptrtoaddr ptr [[TMP89]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP91:%.*]] = ptrtoaddr ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP92:%.*]] = sub nuw i64 [[TMP90]], [[TMP91]]
|
||||
// CHECK2-51-NEXT: [[TMP93:%.*]] = ptrtoint ptr [[ARRAYIDX16]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP94:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP77]], i64 1
|
||||
// CHECK2-51-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP94]], i32 0, i32 0
|
||||
@ -4347,9 +4347,9 @@ void test_transparent()
|
||||
// CHECK2-51-NEXT: [[ARRAYIDX25:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP117]]
|
||||
// CHECK2-51-NEXT: [[ARRAYIDX26:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX25]], i64 [[LEN_SUB_1]]
|
||||
// CHECK2-51-NEXT: [[TMP118:%.*]] = getelementptr i32, ptr [[ARRAYIDX26]], i32 1
|
||||
// CHECK2-51-NEXT: [[TMP119:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP120:%.*]] = ptrtoint ptr [[TMP118]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP121:%.*]] = sub nuw i64 [[TMP120]], [[TMP119]]
|
||||
// CHECK2-51-NEXT: [[TMP119:%.*]] = ptrtoaddr ptr [[TMP118]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP120:%.*]] = ptrtoaddr ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP121:%.*]] = sub nuw i64 [[TMP119]], [[TMP120]]
|
||||
// CHECK2-51-NEXT: [[TMP122:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP123:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP102]], i64 2
|
||||
// CHECK2-51-NEXT: [[TMP124:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP123]], i32 0, i32 0
|
||||
@ -4392,9 +4392,9 @@ void test_transparent()
|
||||
// CHECK2-51-NEXT: [[ARRAYIDX35:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP145]]
|
||||
// CHECK2-51-NEXT: [[ARRAYIDX36:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX35]], i64 [[LEN_SUB_133]]
|
||||
// CHECK2-51-NEXT: [[TMP146:%.*]] = getelementptr i32, ptr [[ARRAYIDX36]], i32 1
|
||||
// CHECK2-51-NEXT: [[TMP147:%.*]] = ptrtoint ptr [[ARRAYIDX32]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP148:%.*]] = ptrtoint ptr [[TMP146]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP149:%.*]] = sub nuw i64 [[TMP148]], [[TMP147]]
|
||||
// CHECK2-51-NEXT: [[TMP147:%.*]] = ptrtoaddr ptr [[TMP146]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP148:%.*]] = ptrtoaddr ptr [[ARRAYIDX32]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP149:%.*]] = sub nuw i64 [[TMP147]], [[TMP148]]
|
||||
// CHECK2-51-NEXT: [[TMP150:%.*]] = ptrtoint ptr [[ARRAYIDX32]] to i64
|
||||
// CHECK2-51-NEXT: [[TMP151:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP130]], i64 2
|
||||
// CHECK2-51-NEXT: [[TMP152:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP151]], i32 0, i32 0
|
||||
@ -5831,9 +5831,9 @@ void test_transparent()
|
||||
// CHECK3-NEXT: [[TMP34:%.*]] = mul nsw i64 9, [[TMP1]]
|
||||
// CHECK3-NEXT: [[ARRAYIDX4:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP34]]
|
||||
// CHECK3-NEXT: [[TMP35:%.*]] = getelementptr i32, ptr [[ARRAYIDX4]], i32 1
|
||||
// CHECK3-NEXT: [[TMP36:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK3-NEXT: [[TMP37:%.*]] = ptrtoint ptr [[TMP35]] to i64
|
||||
// CHECK3-NEXT: [[TMP38:%.*]] = sub nuw i64 [[TMP37]], [[TMP36]]
|
||||
// CHECK3-NEXT: [[TMP36:%.*]] = ptrtoaddr ptr [[TMP35]] to i64
|
||||
// CHECK3-NEXT: [[TMP37:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i64
|
||||
// CHECK3-NEXT: [[TMP38:%.*]] = sub nuw i64 [[TMP36]], [[TMP37]]
|
||||
// CHECK3-NEXT: [[TMP39:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK3-NEXT: [[TMP40:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP18]], i64 3
|
||||
// CHECK3-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP40]], i32 0, i32 0
|
||||
@ -5876,9 +5876,9 @@ void test_transparent()
|
||||
// CHECK3-NEXT: [[ARRAYIDX15:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP62]]
|
||||
// CHECK3-NEXT: [[ARRAYIDX16:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX15]], i64 [[TMP61]]
|
||||
// CHECK3-NEXT: [[TMP63:%.*]] = getelementptr i32, ptr [[ARRAYIDX16]], i32 1
|
||||
// CHECK3-NEXT: [[TMP64:%.*]] = ptrtoint ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK3-NEXT: [[TMP65:%.*]] = ptrtoint ptr [[TMP63]] to i64
|
||||
// CHECK3-NEXT: [[TMP66:%.*]] = sub nuw i64 [[TMP65]], [[TMP64]]
|
||||
// CHECK3-NEXT: [[TMP64:%.*]] = ptrtoaddr ptr [[TMP63]] to i64
|
||||
// CHECK3-NEXT: [[TMP65:%.*]] = ptrtoaddr ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK3-NEXT: [[TMP66:%.*]] = sub nuw i64 [[TMP64]], [[TMP65]]
|
||||
// CHECK3-NEXT: [[TMP67:%.*]] = ptrtoint ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK3-NEXT: [[TMP68:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP51]], i64 1
|
||||
// CHECK3-NEXT: [[TMP69:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP68]], i32 0, i32 0
|
||||
@ -5916,9 +5916,9 @@ void test_transparent()
|
||||
// CHECK3-NEXT: [[ARRAYIDX25:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP87]]
|
||||
// CHECK3-NEXT: [[ARRAYIDX26:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX25]], i64 [[TMP86]]
|
||||
// CHECK3-NEXT: [[TMP88:%.*]] = getelementptr i32, ptr [[ARRAYIDX26]], i32 1
|
||||
// CHECK3-NEXT: [[TMP89:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK3-NEXT: [[TMP90:%.*]] = ptrtoint ptr [[TMP88]] to i64
|
||||
// CHECK3-NEXT: [[TMP91:%.*]] = sub nuw i64 [[TMP90]], [[TMP89]]
|
||||
// CHECK3-NEXT: [[TMP89:%.*]] = ptrtoaddr ptr [[TMP88]] to i64
|
||||
// CHECK3-NEXT: [[TMP90:%.*]] = ptrtoaddr ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK3-NEXT: [[TMP91:%.*]] = sub nuw i64 [[TMP89]], [[TMP90]]
|
||||
// CHECK3-NEXT: [[TMP92:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK3-NEXT: [[TMP93:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP76]], i64 1
|
||||
// CHECK3-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP93]], i32 0, i32 0
|
||||
@ -5965,9 +5965,9 @@ void test_transparent()
|
||||
// CHECK3-NEXT: [[ARRAYIDX35:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP116]]
|
||||
// CHECK3-NEXT: [[ARRAYIDX36:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX35]], i64 [[LEN_SUB_1]]
|
||||
// CHECK3-NEXT: [[TMP117:%.*]] = getelementptr i32, ptr [[ARRAYIDX36]], i32 1
|
||||
// CHECK3-NEXT: [[TMP118:%.*]] = ptrtoint ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK3-NEXT: [[TMP119:%.*]] = ptrtoint ptr [[TMP117]] to i64
|
||||
// CHECK3-NEXT: [[TMP120:%.*]] = sub nuw i64 [[TMP119]], [[TMP118]]
|
||||
// CHECK3-NEXT: [[TMP118:%.*]] = ptrtoaddr ptr [[TMP117]] to i64
|
||||
// CHECK3-NEXT: [[TMP119:%.*]] = ptrtoaddr ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK3-NEXT: [[TMP120:%.*]] = sub nuw i64 [[TMP118]], [[TMP119]]
|
||||
// CHECK3-NEXT: [[TMP121:%.*]] = ptrtoint ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK3-NEXT: [[TMP122:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP101]], i64 2
|
||||
// CHECK3-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP122]], i32 0, i32 0
|
||||
@ -6847,9 +6847,9 @@ void test_transparent()
|
||||
// CHECK4-NEXT: [[TMP34:%.*]] = mul nsw i64 9, [[TMP1]]
|
||||
// CHECK4-NEXT: [[ARRAYIDX4:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP34]]
|
||||
// CHECK4-NEXT: [[TMP35:%.*]] = getelementptr i32, ptr [[ARRAYIDX4]], i32 1
|
||||
// CHECK4-NEXT: [[TMP36:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK4-NEXT: [[TMP37:%.*]] = ptrtoint ptr [[TMP35]] to i64
|
||||
// CHECK4-NEXT: [[TMP38:%.*]] = sub nuw i64 [[TMP37]], [[TMP36]]
|
||||
// CHECK4-NEXT: [[TMP36:%.*]] = ptrtoaddr ptr [[TMP35]] to i64
|
||||
// CHECK4-NEXT: [[TMP37:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i64
|
||||
// CHECK4-NEXT: [[TMP38:%.*]] = sub nuw i64 [[TMP36]], [[TMP37]]
|
||||
// CHECK4-NEXT: [[TMP39:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK4-NEXT: [[TMP40:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP18]], i64 3
|
||||
// CHECK4-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP40]], i32 0, i32 0
|
||||
@ -6892,9 +6892,9 @@ void test_transparent()
|
||||
// CHECK4-NEXT: [[ARRAYIDX15:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP62]]
|
||||
// CHECK4-NEXT: [[ARRAYIDX16:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX15]], i64 [[TMP61]]
|
||||
// CHECK4-NEXT: [[TMP63:%.*]] = getelementptr i32, ptr [[ARRAYIDX16]], i32 1
|
||||
// CHECK4-NEXT: [[TMP64:%.*]] = ptrtoint ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK4-NEXT: [[TMP65:%.*]] = ptrtoint ptr [[TMP63]] to i64
|
||||
// CHECK4-NEXT: [[TMP66:%.*]] = sub nuw i64 [[TMP65]], [[TMP64]]
|
||||
// CHECK4-NEXT: [[TMP64:%.*]] = ptrtoaddr ptr [[TMP63]] to i64
|
||||
// CHECK4-NEXT: [[TMP65:%.*]] = ptrtoaddr ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK4-NEXT: [[TMP66:%.*]] = sub nuw i64 [[TMP64]], [[TMP65]]
|
||||
// CHECK4-NEXT: [[TMP67:%.*]] = ptrtoint ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK4-NEXT: [[TMP68:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP51]], i64 1
|
||||
// CHECK4-NEXT: [[TMP69:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP68]], i32 0, i32 0
|
||||
@ -6932,9 +6932,9 @@ void test_transparent()
|
||||
// CHECK4-NEXT: [[ARRAYIDX25:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP87]]
|
||||
// CHECK4-NEXT: [[ARRAYIDX26:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX25]], i64 [[TMP86]]
|
||||
// CHECK4-NEXT: [[TMP88:%.*]] = getelementptr i32, ptr [[ARRAYIDX26]], i32 1
|
||||
// CHECK4-NEXT: [[TMP89:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK4-NEXT: [[TMP90:%.*]] = ptrtoint ptr [[TMP88]] to i64
|
||||
// CHECK4-NEXT: [[TMP91:%.*]] = sub nuw i64 [[TMP90]], [[TMP89]]
|
||||
// CHECK4-NEXT: [[TMP89:%.*]] = ptrtoaddr ptr [[TMP88]] to i64
|
||||
// CHECK4-NEXT: [[TMP90:%.*]] = ptrtoaddr ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK4-NEXT: [[TMP91:%.*]] = sub nuw i64 [[TMP89]], [[TMP90]]
|
||||
// CHECK4-NEXT: [[TMP92:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK4-NEXT: [[TMP93:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP76]], i64 1
|
||||
// CHECK4-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP93]], i32 0, i32 0
|
||||
@ -6981,9 +6981,9 @@ void test_transparent()
|
||||
// CHECK4-NEXT: [[ARRAYIDX35:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP116]]
|
||||
// CHECK4-NEXT: [[ARRAYIDX36:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX35]], i64 [[LEN_SUB_1]]
|
||||
// CHECK4-NEXT: [[TMP117:%.*]] = getelementptr i32, ptr [[ARRAYIDX36]], i32 1
|
||||
// CHECK4-NEXT: [[TMP118:%.*]] = ptrtoint ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK4-NEXT: [[TMP119:%.*]] = ptrtoint ptr [[TMP117]] to i64
|
||||
// CHECK4-NEXT: [[TMP120:%.*]] = sub nuw i64 [[TMP119]], [[TMP118]]
|
||||
// CHECK4-NEXT: [[TMP118:%.*]] = ptrtoaddr ptr [[TMP117]] to i64
|
||||
// CHECK4-NEXT: [[TMP119:%.*]] = ptrtoaddr ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK4-NEXT: [[TMP120:%.*]] = sub nuw i64 [[TMP118]], [[TMP119]]
|
||||
// CHECK4-NEXT: [[TMP121:%.*]] = ptrtoint ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK4-NEXT: [[TMP122:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP101]], i64 2
|
||||
// CHECK4-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP122]], i32 0, i32 0
|
||||
@ -7866,9 +7866,9 @@ void test_transparent()
|
||||
// CHECK3-51-NEXT: [[TMP34:%.*]] = mul nsw i64 9, [[TMP1]]
|
||||
// CHECK3-51-NEXT: [[ARRAYIDX4:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP34]]
|
||||
// CHECK3-51-NEXT: [[TMP35:%.*]] = getelementptr i32, ptr [[ARRAYIDX4]], i32 1
|
||||
// CHECK3-51-NEXT: [[TMP36:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP37:%.*]] = ptrtoint ptr [[TMP35]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP38:%.*]] = sub nuw i64 [[TMP37]], [[TMP36]]
|
||||
// CHECK3-51-NEXT: [[TMP36:%.*]] = ptrtoaddr ptr [[TMP35]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP37:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP38:%.*]] = sub nuw i64 [[TMP36]], [[TMP37]]
|
||||
// CHECK3-51-NEXT: [[TMP39:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP40:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP18]], i64 3
|
||||
// CHECK3-51-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP40]], i32 0, i32 0
|
||||
@ -7911,9 +7911,9 @@ void test_transparent()
|
||||
// CHECK3-51-NEXT: [[ARRAYIDX15:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP62]]
|
||||
// CHECK3-51-NEXT: [[ARRAYIDX16:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX15]], i64 [[TMP61]]
|
||||
// CHECK3-51-NEXT: [[TMP63:%.*]] = getelementptr i32, ptr [[ARRAYIDX16]], i32 1
|
||||
// CHECK3-51-NEXT: [[TMP64:%.*]] = ptrtoint ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP65:%.*]] = ptrtoint ptr [[TMP63]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP66:%.*]] = sub nuw i64 [[TMP65]], [[TMP64]]
|
||||
// CHECK3-51-NEXT: [[TMP64:%.*]] = ptrtoaddr ptr [[TMP63]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP65:%.*]] = ptrtoaddr ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP66:%.*]] = sub nuw i64 [[TMP64]], [[TMP65]]
|
||||
// CHECK3-51-NEXT: [[TMP67:%.*]] = ptrtoint ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP68:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP51]], i64 1
|
||||
// CHECK3-51-NEXT: [[TMP69:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP68]], i32 0, i32 0
|
||||
@ -7951,9 +7951,9 @@ void test_transparent()
|
||||
// CHECK3-51-NEXT: [[ARRAYIDX25:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP87]]
|
||||
// CHECK3-51-NEXT: [[ARRAYIDX26:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX25]], i64 [[TMP86]]
|
||||
// CHECK3-51-NEXT: [[TMP88:%.*]] = getelementptr i32, ptr [[ARRAYIDX26]], i32 1
|
||||
// CHECK3-51-NEXT: [[TMP89:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP90:%.*]] = ptrtoint ptr [[TMP88]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP91:%.*]] = sub nuw i64 [[TMP90]], [[TMP89]]
|
||||
// CHECK3-51-NEXT: [[TMP89:%.*]] = ptrtoaddr ptr [[TMP88]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP90:%.*]] = ptrtoaddr ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP91:%.*]] = sub nuw i64 [[TMP89]], [[TMP90]]
|
||||
// CHECK3-51-NEXT: [[TMP92:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP93:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP76]], i64 1
|
||||
// CHECK3-51-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP93]], i32 0, i32 0
|
||||
@ -8000,9 +8000,9 @@ void test_transparent()
|
||||
// CHECK3-51-NEXT: [[ARRAYIDX35:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP116]]
|
||||
// CHECK3-51-NEXT: [[ARRAYIDX36:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX35]], i64 [[LEN_SUB_1]]
|
||||
// CHECK3-51-NEXT: [[TMP117:%.*]] = getelementptr i32, ptr [[ARRAYIDX36]], i32 1
|
||||
// CHECK3-51-NEXT: [[TMP118:%.*]] = ptrtoint ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP119:%.*]] = ptrtoint ptr [[TMP117]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP120:%.*]] = sub nuw i64 [[TMP119]], [[TMP118]]
|
||||
// CHECK3-51-NEXT: [[TMP118:%.*]] = ptrtoaddr ptr [[TMP117]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP119:%.*]] = ptrtoaddr ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP120:%.*]] = sub nuw i64 [[TMP118]], [[TMP119]]
|
||||
// CHECK3-51-NEXT: [[TMP121:%.*]] = ptrtoint ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP122:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP101]], i64 2
|
||||
// CHECK3-51-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP122]], i32 0, i32 0
|
||||
@ -8047,9 +8047,9 @@ void test_transparent()
|
||||
// CHECK3-51-NEXT: [[ARRAYIDX47:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP144]]
|
||||
// CHECK3-51-NEXT: [[ARRAYIDX48:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX47]], i64 [[LEN_SUB_145]]
|
||||
// CHECK3-51-NEXT: [[TMP145:%.*]] = getelementptr i32, ptr [[ARRAYIDX48]], i32 1
|
||||
// CHECK3-51-NEXT: [[TMP146:%.*]] = ptrtoint ptr [[ARRAYIDX44]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP147:%.*]] = ptrtoint ptr [[TMP145]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP148:%.*]] = sub nuw i64 [[TMP147]], [[TMP146]]
|
||||
// CHECK3-51-NEXT: [[TMP146:%.*]] = ptrtoaddr ptr [[TMP145]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP147:%.*]] = ptrtoaddr ptr [[ARRAYIDX44]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP148:%.*]] = sub nuw i64 [[TMP146]], [[TMP147]]
|
||||
// CHECK3-51-NEXT: [[TMP149:%.*]] = ptrtoint ptr [[ARRAYIDX44]] to i64
|
||||
// CHECK3-51-NEXT: [[TMP150:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP129]], i64 2
|
||||
// CHECK3-51-NEXT: [[TMP151:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP150]], i32 0, i32 0
|
||||
@ -9381,9 +9381,9 @@ void test_transparent()
|
||||
// CHECK4-51-NEXT: [[TMP34:%.*]] = mul nsw i64 9, [[TMP1]]
|
||||
// CHECK4-51-NEXT: [[ARRAYIDX4:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP34]]
|
||||
// CHECK4-51-NEXT: [[TMP35:%.*]] = getelementptr i32, ptr [[ARRAYIDX4]], i32 1
|
||||
// CHECK4-51-NEXT: [[TMP36:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP37:%.*]] = ptrtoint ptr [[TMP35]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP38:%.*]] = sub nuw i64 [[TMP37]], [[TMP36]]
|
||||
// CHECK4-51-NEXT: [[TMP36:%.*]] = ptrtoaddr ptr [[TMP35]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP37:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP38:%.*]] = sub nuw i64 [[TMP36]], [[TMP37]]
|
||||
// CHECK4-51-NEXT: [[TMP39:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP40:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP18]], i64 3
|
||||
// CHECK4-51-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP40]], i32 0, i32 0
|
||||
@ -9426,9 +9426,9 @@ void test_transparent()
|
||||
// CHECK4-51-NEXT: [[ARRAYIDX15:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP62]]
|
||||
// CHECK4-51-NEXT: [[ARRAYIDX16:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX15]], i64 [[TMP61]]
|
||||
// CHECK4-51-NEXT: [[TMP63:%.*]] = getelementptr i32, ptr [[ARRAYIDX16]], i32 1
|
||||
// CHECK4-51-NEXT: [[TMP64:%.*]] = ptrtoint ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP65:%.*]] = ptrtoint ptr [[TMP63]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP66:%.*]] = sub nuw i64 [[TMP65]], [[TMP64]]
|
||||
// CHECK4-51-NEXT: [[TMP64:%.*]] = ptrtoaddr ptr [[TMP63]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP65:%.*]] = ptrtoaddr ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP66:%.*]] = sub nuw i64 [[TMP64]], [[TMP65]]
|
||||
// CHECK4-51-NEXT: [[TMP67:%.*]] = ptrtoint ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP68:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP51]], i64 1
|
||||
// CHECK4-51-NEXT: [[TMP69:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP68]], i32 0, i32 0
|
||||
@ -9466,9 +9466,9 @@ void test_transparent()
|
||||
// CHECK4-51-NEXT: [[ARRAYIDX25:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP87]]
|
||||
// CHECK4-51-NEXT: [[ARRAYIDX26:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX25]], i64 [[TMP86]]
|
||||
// CHECK4-51-NEXT: [[TMP88:%.*]] = getelementptr i32, ptr [[ARRAYIDX26]], i32 1
|
||||
// CHECK4-51-NEXT: [[TMP89:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP90:%.*]] = ptrtoint ptr [[TMP88]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP91:%.*]] = sub nuw i64 [[TMP90]], [[TMP89]]
|
||||
// CHECK4-51-NEXT: [[TMP89:%.*]] = ptrtoaddr ptr [[TMP88]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP90:%.*]] = ptrtoaddr ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP91:%.*]] = sub nuw i64 [[TMP89]], [[TMP90]]
|
||||
// CHECK4-51-NEXT: [[TMP92:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP93:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP76]], i64 1
|
||||
// CHECK4-51-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP93]], i32 0, i32 0
|
||||
@ -9515,9 +9515,9 @@ void test_transparent()
|
||||
// CHECK4-51-NEXT: [[ARRAYIDX35:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP116]]
|
||||
// CHECK4-51-NEXT: [[ARRAYIDX36:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX35]], i64 [[LEN_SUB_1]]
|
||||
// CHECK4-51-NEXT: [[TMP117:%.*]] = getelementptr i32, ptr [[ARRAYIDX36]], i32 1
|
||||
// CHECK4-51-NEXT: [[TMP118:%.*]] = ptrtoint ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP119:%.*]] = ptrtoint ptr [[TMP117]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP120:%.*]] = sub nuw i64 [[TMP119]], [[TMP118]]
|
||||
// CHECK4-51-NEXT: [[TMP118:%.*]] = ptrtoaddr ptr [[TMP117]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP119:%.*]] = ptrtoaddr ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP120:%.*]] = sub nuw i64 [[TMP118]], [[TMP119]]
|
||||
// CHECK4-51-NEXT: [[TMP121:%.*]] = ptrtoint ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK4-51-NEXT: [[TMP122:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP101]], i64 2
|
||||
// CHECK4-51-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP122]], i32 0, i32 0
|
||||
@ -10397,9 +10397,9 @@ void test_transparent()
|
||||
// CHECK6-NEXT: [[TMP34:%.*]] = mul nsw i64 9, [[TMP1]]
|
||||
// CHECK6-NEXT: [[ARRAYIDX4:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP34]]
|
||||
// CHECK6-NEXT: [[TMP35:%.*]] = getelementptr i32, ptr [[ARRAYIDX4]], i32 1
|
||||
// CHECK6-NEXT: [[TMP36:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK6-NEXT: [[TMP37:%.*]] = ptrtoint ptr [[TMP35]] to i64
|
||||
// CHECK6-NEXT: [[TMP38:%.*]] = sub nuw i64 [[TMP37]], [[TMP36]]
|
||||
// CHECK6-NEXT: [[TMP36:%.*]] = ptrtoaddr ptr [[TMP35]] to i64
|
||||
// CHECK6-NEXT: [[TMP37:%.*]] = ptrtoaddr ptr [[ARRAYIDX]] to i64
|
||||
// CHECK6-NEXT: [[TMP38:%.*]] = sub nuw i64 [[TMP36]], [[TMP37]]
|
||||
// CHECK6-NEXT: [[TMP39:%.*]] = ptrtoint ptr [[ARRAYIDX]] to i64
|
||||
// CHECK6-NEXT: [[TMP40:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP18]], i64 3
|
||||
// CHECK6-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP40]], i32 0, i32 0
|
||||
@ -10442,9 +10442,9 @@ void test_transparent()
|
||||
// CHECK6-NEXT: [[ARRAYIDX15:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP62]]
|
||||
// CHECK6-NEXT: [[ARRAYIDX16:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX15]], i64 [[TMP61]]
|
||||
// CHECK6-NEXT: [[TMP63:%.*]] = getelementptr i32, ptr [[ARRAYIDX16]], i32 1
|
||||
// CHECK6-NEXT: [[TMP64:%.*]] = ptrtoint ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK6-NEXT: [[TMP65:%.*]] = ptrtoint ptr [[TMP63]] to i64
|
||||
// CHECK6-NEXT: [[TMP66:%.*]] = sub nuw i64 [[TMP65]], [[TMP64]]
|
||||
// CHECK6-NEXT: [[TMP64:%.*]] = ptrtoaddr ptr [[TMP63]] to i64
|
||||
// CHECK6-NEXT: [[TMP65:%.*]] = ptrtoaddr ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK6-NEXT: [[TMP66:%.*]] = sub nuw i64 [[TMP64]], [[TMP65]]
|
||||
// CHECK6-NEXT: [[TMP67:%.*]] = ptrtoint ptr [[ARRAYIDX14]] to i64
|
||||
// CHECK6-NEXT: [[TMP68:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP51]], i64 1
|
||||
// CHECK6-NEXT: [[TMP69:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP68]], i32 0, i32 0
|
||||
@ -10482,9 +10482,9 @@ void test_transparent()
|
||||
// CHECK6-NEXT: [[ARRAYIDX25:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP87]]
|
||||
// CHECK6-NEXT: [[ARRAYIDX26:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX25]], i64 [[TMP86]]
|
||||
// CHECK6-NEXT: [[TMP88:%.*]] = getelementptr i32, ptr [[ARRAYIDX26]], i32 1
|
||||
// CHECK6-NEXT: [[TMP89:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK6-NEXT: [[TMP90:%.*]] = ptrtoint ptr [[TMP88]] to i64
|
||||
// CHECK6-NEXT: [[TMP91:%.*]] = sub nuw i64 [[TMP90]], [[TMP89]]
|
||||
// CHECK6-NEXT: [[TMP89:%.*]] = ptrtoaddr ptr [[TMP88]] to i64
|
||||
// CHECK6-NEXT: [[TMP90:%.*]] = ptrtoaddr ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK6-NEXT: [[TMP91:%.*]] = sub nuw i64 [[TMP89]], [[TMP90]]
|
||||
// CHECK6-NEXT: [[TMP92:%.*]] = ptrtoint ptr [[ARRAYIDX24]] to i64
|
||||
// CHECK6-NEXT: [[TMP93:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP76]], i64 1
|
||||
// CHECK6-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP93]], i32 0, i32 0
|
||||
@ -10531,9 +10531,9 @@ void test_transparent()
|
||||
// CHECK6-NEXT: [[ARRAYIDX35:%.*]] = getelementptr inbounds nuw i32, ptr [[VLA]], i64 [[TMP116]]
|
||||
// CHECK6-NEXT: [[ARRAYIDX36:%.*]] = getelementptr inbounds nuw i32, ptr [[ARRAYIDX35]], i64 [[LEN_SUB_1]]
|
||||
// CHECK6-NEXT: [[TMP117:%.*]] = getelementptr i32, ptr [[ARRAYIDX36]], i32 1
|
||||
// CHECK6-NEXT: [[TMP118:%.*]] = ptrtoint ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK6-NEXT: [[TMP119:%.*]] = ptrtoint ptr [[TMP117]] to i64
|
||||
// CHECK6-NEXT: [[TMP120:%.*]] = sub nuw i64 [[TMP119]], [[TMP118]]
|
||||
// CHECK6-NEXT: [[TMP118:%.*]] = ptrtoaddr ptr [[TMP117]] to i64
|
||||
// CHECK6-NEXT: [[TMP119:%.*]] = ptrtoaddr ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK6-NEXT: [[TMP120:%.*]] = sub nuw i64 [[TMP118]], [[TMP119]]
|
||||
// CHECK6-NEXT: [[TMP121:%.*]] = ptrtoint ptr [[ARRAYIDX34]] to i64
|
||||
// CHECK6-NEXT: [[TMP122:%.*]] = getelementptr [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP101]], i64 2
|
||||
// CHECK6-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw [[STRUCT_KMP_DEPEND_INFO]], ptr [[TMP122]], i32 0, i32 0
|
||||
|
||||
@ -2655,7 +2655,8 @@ public:
|
||||
|
||||
/// Return the difference between two pointer values. The returned value
|
||||
/// type is the address type of the pointers.
|
||||
LLVM_ABI Value *CreatePtrDiff(Value *LHS, Value *RHS, const Twine &Name = "");
|
||||
LLVM_ABI Value *CreatePtrDiff(Value *LHS, Value *RHS, const Twine &Name = "",
|
||||
bool IsNUW = false);
|
||||
|
||||
/// Return the difference between two pointer values, dividing out the size
|
||||
/// of the pointed-to objects. The returned value type is the address type
|
||||
|
||||
@ -1129,12 +1129,13 @@ Value *IRBuilderBase::CreateSelectFMF(Value *C, Value *True, Value *False,
|
||||
return Insert(Sel, Name);
|
||||
}
|
||||
|
||||
Value *IRBuilderBase::CreatePtrDiff(Value *LHS, Value *RHS, const Twine &Name) {
|
||||
Value *IRBuilderBase::CreatePtrDiff(Value *LHS, Value *RHS, const Twine &Name,
|
||||
bool IsNUW) {
|
||||
assert(LHS->getType() == RHS->getType() &&
|
||||
"Pointer subtraction operand types must match!");
|
||||
Value *LHSAddr = CreatePtrToAddr(LHS);
|
||||
Value *RHSAddr = CreatePtrToAddr(RHS);
|
||||
return CreateSub(LHSAddr, RHSAddr, Name);
|
||||
return CreateSub(LHSAddr, RHSAddr, Name, IsNUW);
|
||||
}
|
||||
Value *IRBuilderBase::CreatePtrDiff(Type *ElemTy, Value *LHS, Value *RHS,
|
||||
const Twine &Name) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user