Implement "internal vs external linkage" which corresponds to the C notion of static
llvm-svn: 1362
This commit is contained in:
		
							parent
							
								
									876932c5b3
								
							
						
					
					
						commit
						44c3b4f841
					
				| 
						 | 
				
			
			@ -42,7 +42,7 @@ private:
 | 
			
		|||
  void setParent(Module *parent);
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
  Method(const MethodType *Ty, const string &Name = "");
 | 
			
		||||
  Method(const MethodType *Ty, bool isInternal, const string &Name = "");
 | 
			
		||||
  ~Method();
 | 
			
		||||
 | 
			
		||||
  // Specialize setName to handle symbol table majik...
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,9 +16,11 @@ class PointerType;
 | 
			
		|||
class GlobalValue : public User {
 | 
			
		||||
  GlobalValue(const GlobalValue &);             // do not implement
 | 
			
		||||
protected:
 | 
			
		||||
  GlobalValue(const Type *Ty, ValueTy vty, const string &name = "")
 | 
			
		||||
    : User(Ty, vty, name) { Parent = 0; }
 | 
			
		||||
  GlobalValue(const Type *Ty, ValueTy vty, bool hasInternalLinkage,
 | 
			
		||||
	      const string &name = "")
 | 
			
		||||
    : User(Ty, vty, name), HasInternalLinkage(hasInternalLinkage), Parent(0) {}
 | 
			
		||||
 | 
			
		||||
  bool HasInternalLinkage;    // Is this value accessable externally?
 | 
			
		||||
  Module *Parent;
 | 
			
		||||
public:
 | 
			
		||||
  ~GlobalValue() {}
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +30,11 @@ public:
 | 
			
		|||
    return (const PointerType*)User::getType();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Internal Linkage - True if the global value is inaccessible to 
 | 
			
		||||
  bool hasInternalLinkage() const { return HasInternalLinkage; }
 | 
			
		||||
  bool hasExternalLinkage() const { return !HasInternalLinkage; }
 | 
			
		||||
  void setInternalLinkage(bool HIL) { HasInternalLinkage = HIL; }
 | 
			
		||||
 | 
			
		||||
  // Get the module that this global value is contained inside of...
 | 
			
		||||
  inline Module *getParent() { return Parent; }
 | 
			
		||||
  inline const Module *getParent() const { return Parent; }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,8 +24,8 @@ class GlobalVariable : public GlobalValue {
 | 
			
		|||
 | 
			
		||||
  bool Constant;                   // Is this a global constant?
 | 
			
		||||
public:
 | 
			
		||||
  GlobalVariable(const Type *Ty, bool isConstant, ConstPoolVal *Initializer = 0,
 | 
			
		||||
		 const string &Name = "");
 | 
			
		||||
  GlobalVariable(const Type *Ty, bool isConstant, bool isInternal,
 | 
			
		||||
		 ConstPoolVal *Initializer = 0, const string &Name = "");
 | 
			
		||||
  ~GlobalVariable() {}
 | 
			
		||||
 | 
			
		||||
  // Specialize setName to handle symbol table majik...
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue