forked from OSchip/llvm-project
[IR] Don't copy profile metadata in createCallMatchingInvoke()
The invoke instruction can have profile metadata with branch_weights, which does not make sense for a call instruction and will be rejected by the verifier. Differential revision: https://reviews.llvm.org/D81996
This commit is contained in:
parent
1cafd8a5d1
commit
16ad6eeb94
|
@ -1985,6 +1985,11 @@ CallInst *llvm::createCallMatchingInvoke(InvokeInst *II) {
|
|||
NewCall->setAttributes(II->getAttributes());
|
||||
NewCall->setDebugLoc(II->getDebugLoc());
|
||||
NewCall->copyMetadata(*II);
|
||||
|
||||
// If the invoke had profile metadata, drop it.
|
||||
if (NewCall->hasMetadata(LLVMContext::MD_prof))
|
||||
NewCall->setMetadata(LLVMContext::MD_prof, nullptr);
|
||||
|
||||
return NewCall;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,9 +7,10 @@ declare void @bar()
|
|||
define i32 @test1() personality i32 (...)* @__gxx_personality_v0 {
|
||||
; CHECK-LABEL: @test1(
|
||||
; CHECK-NEXT: call void @bar()
|
||||
; CHECK-NOT: !prof
|
||||
; CHECK-NEXT: ret i32 0
|
||||
invoke void @bar( )
|
||||
to label %1 unwind label %Rethrow
|
||||
to label %1 unwind label %Rethrow, !prof !0
|
||||
ret i32 0
|
||||
Rethrow:
|
||||
%exn = landingpad {i8*, i32}
|
||||
|
@ -17,6 +18,8 @@ Rethrow:
|
|||
resume { i8*, i32 } %exn
|
||||
}
|
||||
|
||||
!0 = !{!"branch_weights", i32 369, i32 0}
|
||||
|
||||
define i32 @test2() personality i32 (...)* @__gxx_personality_v0 {
|
||||
; CHECK-LABEL: @test2(
|
||||
; CHECK-NEXT: call void @bar() [ "foo"(i32 100) ]
|
||||
|
|
Loading…
Reference in New Issue