diff --git a/include/llvm/Function.h b/include/llvm/Function.h index 4c0e0ec5235..87e6bad48a3 100644 --- a/include/llvm/Function.h +++ b/include/llvm/Function.h @@ -85,7 +85,7 @@ public: /// is empty if so) this is true for external functions, defined as forward /// "declare"ations /// - bool isExternal() const { return BasicBlocks.empty(); } + virtual bool isExternal() const { return BasicBlocks.empty(); } // getNext/Prev - Return the next or previous function in the list. These // methods should never be used directly, and are only used to implement the diff --git a/include/llvm/GlobalValue.h b/include/llvm/GlobalValue.h index 56e4a3e28a1..af2ff23c82e 100644 --- a/include/llvm/GlobalValue.h +++ b/include/llvm/GlobalValue.h @@ -26,17 +26,22 @@ protected: public: ~GlobalValue() {} - // getType - Global values are always pointers. + /// getType - Global values are always pointers. inline const PointerType *getType() const { return (const PointerType*)User::getType(); } - // Internal Linkage - True if the global value is inaccessible to + /// 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... + /// isExternal - Return true if the primary definition of this global value is + /// outside of the current translation unit... + virtual bool isExternal() const = 0; + + /// getParent - Get the module that this global value is contained inside + /// of... inline Module *getParent() { return Parent; } inline const Module *getParent() const { return Parent; } diff --git a/include/llvm/GlobalVariable.h b/include/llvm/GlobalVariable.h index 12862cc4f66..372b7a25e66 100644 --- a/include/llvm/GlobalVariable.h +++ b/include/llvm/GlobalVariable.h @@ -46,7 +46,7 @@ public: /// global variable is defined in some other translation unit, and is thus /// externally defined here. /// - bool isExternal() const { return Operands.empty(); } + virtual bool isExternal() const { return Operands.empty(); } /// hasInitializer - Unless a global variable isExternal(), it has an /// initializer. The initializer for the global variable/constant is held by