diff options
Diffstat (limited to 'llvm/test/Transforms/SROA/basictest.ll')
| -rw-r--r-- | llvm/test/Transforms/SROA/basictest.ll | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SROA/basictest.ll b/llvm/test/Transforms/SROA/basictest.ll index 7b5daa9d782..968669ad4f6 100644 --- a/llvm/test/Transforms/SROA/basictest.ll +++ b/llvm/test/Transforms/SROA/basictest.ll @@ -1633,3 +1633,39 @@ entry: %load = load i16, i16* %bc2 ret i16 %load } + +%struct.STest = type { %struct.SPos, %struct.SPos } +%struct.SPos = type { float, float } + +define void @PR25873(%struct.STest* %outData) { +; CHECK-LABEL: @PR25873( +; CHECK: store i32 1123418112 +; CHECK: store i32 1139015680 +; CHECK: %[[HIZEXT:.*]] = zext i32 1139015680 to i64 +; CHECK: %[[HISHL:.*]] = shl i64 %[[HIZEXT]], 32 +; CHECK: %[[HIMASK:.*]] = and i64 undef, 4294967295 +; CHECK: %[[HIINSERT:.*]] = or i64 %[[HIMASK]], %[[HISHL]] +; CHECK: %[[LOZEXT:.*]] = zext i32 1123418112 to i64 +; CHECK: %[[LOMASK:.*]] = and i64 %[[HIINSERT]], -4294967296 +; CHECK: %[[LOINSERT:.*]] = or i64 %[[LOMASK]], %[[LOZEXT]] +; CHECK: store i64 %[[LOINSERT]] +entry: + %tmpData = alloca %struct.STest, align 8 + %0 = bitcast %struct.STest* %tmpData to i8* + call void @llvm.lifetime.start(i64 16, i8* %0) + %x = getelementptr inbounds %struct.STest, %struct.STest* %tmpData, i64 0, i32 0, i32 0 + store float 1.230000e+02, float* %x, align 8 + %y = getelementptr inbounds %struct.STest, %struct.STest* %tmpData, i64 0, i32 0, i32 1 + store float 4.560000e+02, float* %y, align 4 + %m_posB = getelementptr inbounds %struct.STest, %struct.STest* %tmpData, i64 0, i32 1 + %1 = bitcast %struct.STest* %tmpData to i64* + %2 = bitcast %struct.SPos* %m_posB to i64* + %3 = load i64, i64* %1, align 8 + store i64 %3, i64* %2, align 8 + %4 = bitcast %struct.STest* %outData to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* %4, i8* %0, i64 16, i32 4, i1 false) + call void @llvm.lifetime.end(i64 16, i8* %0) + ret void +} + +declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind |

