forked from OSchip/llvm-project
Allow aliases to be unnamed.
If globals can be unnamed, there is no reason for aliases to be different. The restriction was there since the original implementation in r36435. I can only guess it was there because of the old bison parser for the old alias syntax. llvm-svn: 239921
This commit is contained in:
parent
3df5dd4de7
commit
54fc298bbc
|
@ -670,6 +670,9 @@ bool LLParser::ParseAlias(const std::string &Name, LocTy NameLoc, unsigned L,
|
|||
GA->setDLLStorageClass((GlobalValue::DLLStorageClassTypes)DLLStorageClass);
|
||||
GA->setUnnamedAddr(UnnamedAddr);
|
||||
|
||||
if (Name.empty())
|
||||
NumberedVals.push_back(GA.get());
|
||||
|
||||
// See if this value already exists in the symbol table. If so, it is either
|
||||
// a redefinition or a definition of a forward reference.
|
||||
if (GlobalValue *Val = M->getNamedValue(Name)) {
|
||||
|
|
|
@ -730,6 +730,11 @@ void SlotTracker::processModule() {
|
|||
CreateModuleSlot(&Var);
|
||||
}
|
||||
|
||||
for (const GlobalAlias &A : TheModule->aliases()) {
|
||||
if (!A.hasName())
|
||||
CreateModuleSlot(&A);
|
||||
}
|
||||
|
||||
// Add metadata used by named metadata.
|
||||
for (const NamedMDNode &NMD : TheModule->named_metadata()) {
|
||||
for (unsigned i = 0, e = NMD.getNumOperands(); i != e; ++i)
|
||||
|
@ -2356,13 +2361,9 @@ void AssemblyWriter::printAlias(const GlobalAlias *GA) {
|
|||
if (GA->isMaterializable())
|
||||
Out << "; Materializable\n";
|
||||
|
||||
// Don't crash when dumping partially built GA
|
||||
if (!GA->hasName())
|
||||
Out << "<<nameless>> = ";
|
||||
else {
|
||||
PrintLLVMName(Out, GA);
|
||||
Out << " = ";
|
||||
}
|
||||
WriteAsOperandInternal(Out, GA, &TypePrinter, &Machine, GA->getParent());
|
||||
Out << " = ";
|
||||
|
||||
PrintLinkage(GA->getLinkage(), Out);
|
||||
PrintVisibility(GA->getVisibility(), Out);
|
||||
PrintDLLStorageClass(GA->getDLLStorageClass(), Out);
|
||||
|
|
|
@ -584,7 +584,6 @@ void Verifier::visitAliaseeSubExpr(SmallPtrSetImpl<const GlobalAlias*> &Visited,
|
|||
}
|
||||
|
||||
void Verifier::visitGlobalAlias(const GlobalAlias &GA) {
|
||||
Assert(!GA.getName().empty(), "Alias name cannot be empty!", &GA);
|
||||
Assert(GlobalAlias::isValidLinkage(GA.getLinkage()),
|
||||
"Alias should have private, internal, linkonce, weak, linkonce_odr, "
|
||||
"weak_odr, or external linkage!",
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
; RUN: llvm-as < %s | llvm-dis | FileCheck %s
|
||||
|
||||
@0 = private constant i32 0
|
||||
; CHECK: @0 = private constant i32 0
|
||||
@1 = private constant i32 1
|
||||
; CHECK: @1 = private constant i32 1
|
||||
|
||||
@2 = private alias i32* @0
|
||||
; CHECK: @2 = private alias i32* @0
|
||||
@3 = private alias i32* @1
|
||||
; CHECK: @3 = private alias i32* @1
|
Loading…
Reference in New Issue