summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter.cpp
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2007-04-28 13:45:00 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2007-04-28 13:45:00 +0000
commitb18f8f85e9151195a81833d6862063323338854e (patch)
tree3bbb4f5593defb3935aa086ffccc1edb0f2c606a /llvm/lib/CodeGen/AsmPrinter.cpp
parent1deacd61f4a93742e3e12bac91026158bdb1aaf0 (diff)
downloadbcm5719-llvm-b18f8f85e9151195a81833d6862063323338854e.tar.gz
bcm5719-llvm-b18f8f85e9151195a81833d6862063323338854e.zip
Implement review feedback. Aliasees can be either GlobalValue's or
bitcasts of them. llvm-svn: 36537
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter.cpp')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter.cpp23
1 files changed, 17 insertions, 6 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter.cpp
index 90a98cb5a75..f7571831a34 100644
--- a/llvm/lib/CodeGen/AsmPrinter.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter.cpp
@@ -123,18 +123,29 @@ bool AsmPrinter::doFinalization(Module &M) {
}
if (TAI->getSetDirective()) {
- if (M.alias_size())
+ if (!M.alias_empty())
SwitchToTextSection(TAI->getTextSection());
O << "\n";
for (Module::const_alias_iterator I = M.alias_begin(), E = M.alias_end();
I!=E; ++I) {
- const GlobalValue *Aliasee = I->getAliasee();
- assert(Aliasee && "Aliasee cannot be null!");
- std::string Target = Mang->getValueName(Aliasee);
- std::string Name = Mang->getValueName(I);
+ const Constant *Aliasee = dyn_cast_or_null<Constant>(I->getAliasee());
+ assert(Aliasee && "Aliasee cannot be null");
- // Aliases with external weak linkage was emitted already
+ std::string Name = Mang->getValueName(I);
+ std::string Target;
+
+ if (const GlobalValue *GV = dyn_cast<GlobalValue>(Aliasee))
+ Target = Mang->getValueName(GV);
+ else {
+ const ConstantExpr *CE = 0;
+ if ((CE = dyn_cast<ConstantExpr>(Aliasee)) &&
+ (CE->getOpcode() == Instruction::BitCast))
+ Target = Mang->getValueName(CE->getOperand(0));
+ else
+ assert(0 && "Unsupported aliasee");
+ }
+
if (I->hasExternalLinkage())
O << "\t.globl\t" << Name << "\n";
else if (I->hasWeakLinkage())
OpenPOWER on IntegriCloud