Correctly propagate thread-local flag from aliasee to alias. This fixes PR2137
llvm-svn: 48257
diff --git a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
index b9770fe..4fef382 100644
--- a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
+++ b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
@@ -279,8 +279,14 @@
bool isMemOp = Modifier && !strcmp(Modifier, "mem");
bool needCloseParen = false;
- GlobalValue *GV = MO.getGlobal();
- GlobalVariable *GVar = dyn_cast<GlobalVariable>(GV);
+ const GlobalValue *GV = MO.getGlobal();
+ const GlobalVariable *GVar = dyn_cast<GlobalVariable>(GV);
+ if (!GVar) {
+ // If GV is an alias - use aliasee for determing thread-localness
+ if (const GlobalAlias *GA = dyn_cast<GlobalAlias>(GV))
+ GVar = dyn_cast_or_null<GlobalVariable>(GA->resolveAliasedGlobal());
+ }
+
bool isThreadLocal = GVar && GVar->isThreadLocal();
std::string Name = Mang->getValueName(GV);