mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 06:00:28 +00:00
It's valid to take the blockaddress of a different function, so remove this
assert in the bitcode writer. No change needed because the ValueEnumerator holds a whole-module numbering anyhow. Fixes PR9857! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131016 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ce1cdac942
commit
308fba5fe2
@ -871,8 +871,6 @@ static void WriteConstants(unsigned FirstVal, unsigned LastVal,
|
||||
break;
|
||||
}
|
||||
} else if (const BlockAddress *BA = dyn_cast<BlockAddress>(C)) {
|
||||
assert(BA->getFunction() == BA->getBasicBlock()->getParent() &&
|
||||
"Malformed blockaddress");
|
||||
Code = bitc::CST_CODE_BLOCKADDRESS;
|
||||
Record.push_back(VE.getTypeID(BA->getFunction()->getType()));
|
||||
Record.push_back(VE.getValueID(BA->getFunction()));
|
||||
|
30
test/Bitcode/blockaddress.ll
Normal file
30
test/Bitcode/blockaddress.ll
Normal file
@ -0,0 +1,30 @@
|
||||
; RUN: llvm-as < %s | llvm-dis | FileCheck %s
|
||||
; PR9857
|
||||
|
||||
define void @f(i8** nocapture %ptr1) {
|
||||
; CHECK: define void @f
|
||||
entry:
|
||||
br label %here.i
|
||||
|
||||
here.i:
|
||||
store i8* blockaddress(@doit, %here), i8** %ptr1, align 8
|
||||
; CHECK: blockaddress(@doit, %here)
|
||||
br label %doit.exit
|
||||
|
||||
doit.exit:
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @doit(i8** nocapture %pptr) {
|
||||
; CHECK: define void @doit
|
||||
entry:
|
||||
br label %here
|
||||
|
||||
here:
|
||||
store i8* blockaddress(@doit, %here), i8** %pptr, align 8
|
||||
; CHECK: blockaddress(@doit, %here)
|
||||
br label %end
|
||||
|
||||
end:
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user