|  | 
| 35 | 35 |     ret i32 %call | 
| 36 | 36 | 
 | 
| 37 | 37 |   ; CHECK-LABEL: test1 | 
| 38 |  | -  ; CHECK:         %0 = getelementptr { [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 6 | 
| 39 |  | -  ; CHECK:         tail call signext i32 @calleeStr | 
|  | 38 | +  ; CHECK:         %call = tail call signext i32 @calleeStr(ptr noundef nonnull getelementptr inbounds ({ [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 6)) | 
| 40 | 39 |   } | 
| 41 | 40 | 
 | 
| 42 | 41 |   define dso_local signext i32 @test2() local_unnamed_addr #0 { | 
|  | 
| 49 | 48 |     ret i32 %call | 
| 50 | 49 | 
 | 
| 51 | 50 |   ; CHECK-LABEL: test2 | 
| 52 |  | -  ; CHECK:         %0 = getelementptr { [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 2 | 
|  | 51 | +  ; CHECK:         call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %A, ptr noundef nonnull align 4 dereferenceable(24) getelementptr inbounds ({ [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 2), i64 24, i1 false) | 
| 53 | 52 |   ; CHECK:         call signext i32 @calleeInt | 
| 54 | 53 |   } | 
| 55 | 54 | 
 | 
|  | 
| 62 | 61 |     call void @llvm.lifetime.end.p0(i64 28, ptr nonnull %A) #0 | 
| 63 | 62 |     ret i32 %call | 
| 64 | 63 |   ; CHECK-LABEL: test3 | 
| 65 |  | -  ; CHECK:         %0 = getelementptr { [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 4 | 
|  | 64 | +  ; CHECK:         call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %A, ptr noundef nonnull align 4 dereferenceable(28) getelementptr inbounds ({ [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 4), i64 28, i1 false) | 
| 66 | 65 |   ; CHECK:         call signext i32 @calleeFloat | 
| 67 | 66 |   } | 
| 68 | 67 | 
 | 
|  | 
| 75 | 74 |     call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %A) #0 | 
| 76 | 75 |     ret i32 %call | 
| 77 | 76 |   ; CHECK-LABEL: test4 | 
| 78 |  | -  ; CHECK:         %0 = getelementptr { [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 0 | 
|  | 77 | +  ; CHECK:         call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %A, ptr noundef nonnull align 8 dereferenceable(56) @__ModuleStringPool, i64 56, i1 false) | 
| 79 | 78 |   ; CHECK:         call signext i32 @calleeDouble | 
| 80 | 79 |   } | 
| 81 | 80 | 
 | 
|  | 
| 102 | 101 |     call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %B) #0 | 
| 103 | 102 |     ret i32 %add7 | 
| 104 | 103 |   ; CHECK-LABEL: test5 | 
| 105 |  | -  ; CHECK:         %0 = getelementptr { [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 3 | 
| 106 |  | -  ; CHECK:         %1 = getelementptr { [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 5 | 
| 107 |  | -  ; CHECK:         %2 = getelementptr { [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 1 | 
| 108 |  | -  ; CHECK:         %3 = getelementptr { [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 7 | 
| 109 |  | -  ; CHECK:         call signext i32 @calleeStr | 
|  | 104 | +  ; CHECK:         call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %B, ptr noundef nonnull align 4 dereferenceable(24) getelementptr inbounds ({ [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 3), i64 24, i1 false) | 
|  | 105 | +  ; CHECK:         call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %C, ptr noundef nonnull align 4 dereferenceable(28) getelementptr inbounds ({ [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 5), i64 28, i1 false) | 
|  | 106 | +  ; CHECK:         call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %D, ptr noundef nonnull align 8 dereferenceable(56) getelementptr inbounds ({ [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 1), i64 56, i1 false) | 
|  | 107 | +  ; CHECK:         call signext i32 @calleeStr(ptr noundef nonnull getelementptr inbounds ({ [7 x double], [7 x double], [6 x i32], [6 x i32], [7 x float], [7 x float], [8 x i8], [16 x i8] }, ptr @__ModuleStringPool, i32 0, i32 7)) | 
| 110 | 108 |   ; CHECK:         call signext i32 @calleeInt | 
| 111 | 109 |   ; CHECK:         call signext i32 @calleeFloat | 
| 112 | 110 |   ; CHECK:         call signext i32 @calleeDouble | 
|  | 
0 commit comments