mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-10 08:40:41 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239921 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b200e2f9b4
commit
43e5349f89
@ -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!",
|
||||
|
11
test/Assembler/unnamed-alias.ll
Normal file
11
test/Assembler/unnamed-alias.ll
Normal file
@ -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…
x
Reference in New Issue
Block a user