Implement global merge optimization for global variables.

This commit implements two command line switches -global-merge-on-external
and -global-merge-aligned, and both of them are false by default, so this
optimization is disabled by default for all targets.

For ARM64, some back-end behaviors need to be tuned to get this optimization
further enabled.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208934 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jiangning Liu
2014-05-15 23:45:42 +00:00
parent 01a02d91dc
commit d5db8765d6
20 changed files with 448 additions and 68 deletions

View File

@@ -82,6 +82,10 @@ public:
static inline bool classof(const Value *V) {
return V->getValueID() == Value::GlobalAliasVal;
}
// return the constant offset of an expression, with which this global var
// has alias.
uint64_t calculateOffset(const DataLayout &DL) const;
};
template <>