Reduce abuse of default values in the GlobalAlias constructor.

This is in preparation for adding an optional offset.

llvm-svn: 209073
diff --git a/llvm/lib/IR/Globals.cpp b/llvm/lib/IR/Globals.cpp
index dd2a4e4..dae3bad 100644
--- a/llvm/lib/IR/Globals.cpp
+++ b/llvm/lib/IR/Globals.cpp
@@ -213,9 +213,9 @@
 // GlobalAlias Implementation
 //===----------------------------------------------------------------------===//
 
-GlobalAlias::GlobalAlias(Type *Ty, LinkageTypes Link, const Twine &Name,
-                         GlobalObject *Aliasee, Module *ParentModule,
-                         unsigned AddressSpace)
+GlobalAlias::GlobalAlias(Type *Ty, unsigned AddressSpace, LinkageTypes Link,
+                         const Twine &Name, GlobalObject *Aliasee,
+                         Module *ParentModule)
     : GlobalValue(PointerType::get(Ty, AddressSpace), Value::GlobalAliasVal,
                   &Op<0>(), 1, Link, Name) {
   LeakDetector::addGarbageObject(this);
@@ -225,6 +225,23 @@
     ParentModule->getAliasList().push_back(this);
 }
 
+GlobalAlias::GlobalAlias(Type *Ty, unsigned AddressSpace, LinkageTypes Linkage,
+                         const Twine &Name, Module *Parent)
+    : GlobalAlias(Ty, AddressSpace, Linkage, Name, nullptr, Parent) {}
+
+GlobalAlias::GlobalAlias(Type *Ty, unsigned AddressSpace, LinkageTypes Linkage,
+                         const Twine &Name, GlobalObject *Aliasee)
+    : GlobalAlias(Ty, AddressSpace, Linkage, Name, Aliasee,
+                  Aliasee->getParent()) {}
+
+GlobalAlias::GlobalAlias(LinkageTypes Link, const Twine &Name,
+                         GlobalObject *Aliasee)
+    : GlobalAlias(Aliasee->getType()->getElementType(),
+                  Aliasee->getType()->getAddressSpace(), Link, Name, Aliasee) {}
+
+GlobalAlias::GlobalAlias(const Twine &Name, GlobalObject *Aliasee)
+    : GlobalAlias(Aliasee->getLinkage(), Name, Aliasee) {}
+
 void GlobalAlias::setParent(Module *parent) {
   if (getParent())
     LeakDetector::addGarbageObject(this);