mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 12:19:53 +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;
|
break;
|
||||||
}
|
}
|
||||||
} else if (const BlockAddress *BA = dyn_cast<BlockAddress>(C)) {
|
} else if (const BlockAddress *BA = dyn_cast<BlockAddress>(C)) {
|
||||||
assert(BA->getFunction() == BA->getBasicBlock()->getParent() &&
|
|
||||||
"Malformed blockaddress");
|
|
||||||
Code = bitc::CST_CODE_BLOCKADDRESS;
|
Code = bitc::CST_CODE_BLOCKADDRESS;
|
||||||
Record.push_back(VE.getTypeID(BA->getFunction()->getType()));
|
Record.push_back(VE.getTypeID(BA->getFunction()->getType()));
|
||||||
Record.push_back(VE.getValueID(BA->getFunction()));
|
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