mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-12 23:37:33 +00:00
IR: Use a bitmask to access GlobalObject subclass data
Make room for more than just `Function::isMaterializable()` in the `GlobalObject` subclass data bitfield. Since we're treating it like a bitfield, change `Function::Function()` to zero-out the whole thing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235770 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
223d9cfd30
commit
af8df399e1
@ -77,6 +77,16 @@ private:
|
||||
* bit 3-6: CallingConvention
|
||||
*/
|
||||
|
||||
/// Bits from GlobalObject::GlobalObjectSubclassData.
|
||||
enum {
|
||||
/// Whether this function is materializable.
|
||||
IsMaterializableBit = 1 << 0
|
||||
};
|
||||
void setGlobalObjectBit(unsigned Mask, bool Value) {
|
||||
setGlobalObjectSubClassData((~Mask & getGlobalObjectSubClassData()) |
|
||||
(Value ? Mask : 0u));
|
||||
}
|
||||
|
||||
friend class SymbolTableListTraits<Function, Module>;
|
||||
|
||||
void setParent(Module *parent);
|
||||
|
@ -206,10 +206,12 @@ void Argument::removeAttr(AttributeSet AS) {
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
bool Function::isMaterializable() const {
|
||||
return getGlobalObjectSubClassData();
|
||||
return getGlobalObjectSubClassData() & IsMaterializableBit;
|
||||
}
|
||||
|
||||
void Function::setIsMaterializable(bool V) { setGlobalObjectSubClassData(V); }
|
||||
void Function::setIsMaterializable(bool V) {
|
||||
setGlobalObjectBit(IsMaterializableBit, V);
|
||||
}
|
||||
|
||||
LLVMContext &Function::getContext() const {
|
||||
return getType()->getContext();
|
||||
@ -244,7 +246,7 @@ Function::Function(FunctionType *Ty, LinkageTypes Linkage, const Twine &name,
|
||||
Ty(Ty) {
|
||||
assert(FunctionType::isValidReturnType(getReturnType()) &&
|
||||
"invalid return type");
|
||||
setIsMaterializable(false);
|
||||
setGlobalObjectSubClassData(0);
|
||||
SymTab = new ValueSymbolTable();
|
||||
|
||||
// If the function has arguments, mark them as lazily built.
|
||||
|
Loading…
x
Reference in New Issue
Block a user