mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
Use address-taken to disambiguate global variable and indirect memops.
Major steps include: 1). introduces a not-addr-taken bit-field in GlobalVariable 2). GlobalOpt pass sets "not-address-taken" if it proves a global varirable dosen't have its address taken. 3). AA use this info for disambiguation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193251 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -48,6 +48,7 @@ class GlobalVariable : public GlobalValue, public ilist_node<GlobalVariable> {
|
||||
// can change from its initial
|
||||
// value before global
|
||||
// initializers are run?
|
||||
bool notAddrTaken : 1; // Dose not have address taken.
|
||||
|
||||
public:
|
||||
// allocate space for exactly one operand
|
||||
@@ -174,6 +175,9 @@ public:
|
||||
isExternallyInitializedConstant = Val;
|
||||
}
|
||||
|
||||
void setAddressMaybeTaken(bool Val) { notAddrTaken = !Val; }
|
||||
bool AddressMaybeTaken(void) const { return !notAddrTaken; }
|
||||
|
||||
/// copyAttributesFrom - copy all additional attributes (those not needed to
|
||||
/// create a GlobalVariable) from the GlobalVariable Src to this one.
|
||||
void copyAttributesFrom(const GlobalValue *Src);
|
||||
|
Reference in New Issue
Block a user