forked from OSchip/llvm-project
[PATCH] [PGO] Fixed cast operation in emIntrinsicVisitor::instrumentOneMemIntrinsic.
Reviewers: xur, efriedma, davidxl Reviewed By: davidxl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D34293 llvm-svn: 305737
This commit is contained in:
parent
4c5c02a448
commit
f731bde064
|
@ -1177,7 +1177,7 @@ void MemIntrinsicVisitor::instrumentOneMemIntrinsic(MemIntrinsic &MI) {
|
||||||
Builder.CreateCall(
|
Builder.CreateCall(
|
||||||
Intrinsic::getDeclaration(M, Intrinsic::instrprof_value_profile),
|
Intrinsic::getDeclaration(M, Intrinsic::instrprof_value_profile),
|
||||||
{llvm::ConstantExpr::getBitCast(FuncNameVar, I8PtrTy),
|
{llvm::ConstantExpr::getBitCast(FuncNameVar, I8PtrTy),
|
||||||
Builder.getInt64(FuncHash), Builder.CreatePtrToInt(Length, Int64Ty),
|
Builder.getInt64(FuncHash), Builder.CreateZExtOrTrunc(Length, Int64Ty),
|
||||||
Builder.getInt32(IPVK_MemOPSize), Builder.getInt32(CurCtrId)});
|
Builder.getInt32(IPVK_MemOPSize), Builder.getInt32(CurCtrId)});
|
||||||
++CurCtrId;
|
++CurCtrId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
; RUN: opt < %s -pgo-instr-gen -S | FileCheck %s
|
||||||
|
|
||||||
|
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i32, i1)
|
||||||
|
declare i32 @strlen(i8* nocapture)
|
||||||
|
|
||||||
|
; CHECK_LABEL: test
|
||||||
|
; CHECK: %1 = zext i32 %c to i64
|
||||||
|
; CHECK: call void @llvm.instrprof.value.profile(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__profn_test, i32 0, i32 0), i64 12884901887, i64 %1, i32 1, i32 0)
|
||||||
|
|
||||||
|
define void @test(i8* %a, i8* %p) {
|
||||||
|
%c = call i32 @strlen(i8* %p)
|
||||||
|
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %a, i8* %p, i32 %c, i32 1, i1 false)
|
||||||
|
ret void
|
||||||
|
}
|
Loading…
Reference in New Issue