CodeGen: Allow aliases to be overridden by variables
authorDavid Majnemer <david.majnemer@gmail.com>
Wed, 24 Dec 2014 22:44:29 +0000 (22:44 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Wed, 24 Dec 2014 22:44:29 +0000 (22:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224827 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/AsmPrinter.cpp
test/CodeGen/X86/pr22019.ll

index ec7da6b99c4a1136619e0e81912045f73e859cd7..93445a8c84fb4ace905ed7f39647600cf9a42177 100644 (file)
@@ -337,6 +337,8 @@ void AsmPrinter::EmitGlobalVariable(const GlobalVariable *GV) {
   if (!GV->hasInitializer())   // External globals require no extra code.
     return;
 
+  GVSym->redefineIfPossible();
+
   if (MAI->hasDotTypeDotSizeDirective())
     OutStreamer.EmitSymbolAttribute(GVSym, MCSA_ELF_TypeObject);
 
index f4a1707ad01b5ac9ce5c154f18e6455d8e6f4ad4..4cee5d704d3a70be783981ce60926341c0afbdbb 100644 (file)
@@ -3,10 +3,21 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
 target triple = "x86_64-unknown-linux-gnu"
 
 module asm "pselect = __pselect"
+module asm "var = __var"
+module asm "alias = __alias"
 ; CHECK: pselect = __pselect
+; CHECK: var = __var
+; CHECK: alias = __alias
 
 ; CHECK: pselect:
 ; CHECK: retq
 define void @pselect() {
   ret void
 }
+
+; CHECK: var:
+; CHECK: .long 0
+@var = global i32 0
+
+; CHECK: alias = var
+@alias = alias i32* @var