mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Roundtrip the inalloca bit on allocas through bitcode
This was an oversight in the original support. As it is, I stuffed this bit into the alignment. The alignment is stored in log2 form, so it doesn't need more than 5 bits, given that Value::MaximumAlignment is 1 << 29. Reviewers: nicholas Differential Revision: http://reviews.llvm.org/D3943 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213118 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -1431,13 +1431,20 @@ static void WriteInstruction(const Instruction &I, unsigned InstID,
|
||||
break;
|
||||
}
|
||||
|
||||
case Instruction::Alloca:
|
||||
case Instruction::Alloca: {
|
||||
Code = bitc::FUNC_CODE_INST_ALLOCA;
|
||||
Vals.push_back(VE.getTypeID(I.getType()));
|
||||
Vals.push_back(VE.getTypeID(I.getOperand(0)->getType()));
|
||||
Vals.push_back(VE.getValueID(I.getOperand(0))); // size.
|
||||
Vals.push_back(Log2_32(cast<AllocaInst>(I).getAlignment())+1);
|
||||
const AllocaInst &AI = cast<AllocaInst>(I);
|
||||
unsigned AlignRecord = Log2_32(AI.getAlignment()) + 1;
|
||||
assert(Log2_32(Value::MaximumAlignment) + 1 < 1 << 5 &&
|
||||
"not enough bits for maximum alignment");
|
||||
assert(AlignRecord < 1 << 5 && "alignment greater than 1 << 64");
|
||||
AlignRecord |= AI.isUsedWithInAlloca() << 5;
|
||||
Vals.push_back(AlignRecord);
|
||||
break;
|
||||
}
|
||||
|
||||
case Instruction::Load:
|
||||
if (cast<LoadInst>(I).isAtomic()) {
|
||||
|
Reference in New Issue
Block a user