mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-27 13:20:29 +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! llvm-svn: 131016
This commit is contained in:
parent
3cda8bc78e
commit
5678c8dcc2
@ -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