summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp2
-rw-r--r--llvm/test/CodeGen/AMDGPU/hsa-globals.ll56
2 files changed, 58 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
index 1ef9f597dc2..0c494e37d1e 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
@@ -134,6 +134,8 @@ void AMDGPUAsmPrinter::EmitFunctionEntryLabel() {
static bool isModuleLinkage(const GlobalValue *GV) {
switch (GV->getLinkage()) {
+ case GlobalValue::LinkOnceODRLinkage:
+ case GlobalValue::LinkOnceAnyLinkage:
case GlobalValue::InternalLinkage:
case GlobalValue::CommonLinkage:
return true;
diff --git a/llvm/test/CodeGen/AMDGPU/hsa-globals.ll b/llvm/test/CodeGen/AMDGPU/hsa-globals.ll
index 90322ac3dc0..a19a33492a7 100644
--- a/llvm/test/CodeGen/AMDGPU/hsa-globals.ll
+++ b/llvm/test/CodeGen/AMDGPU/hsa-globals.ll
@@ -1,10 +1,14 @@
; RUN: llc < %s -mtriple=amdgcn--amdhsa -mcpu=kaveri | FileCheck --check-prefix=ASM %s
; RUN: llc < %s -mtriple=amdgcn--amdhsa -mcpu=kaveri | llvm-mc -filetype=obj -triple amdgcn--amdhsa -mcpu=kaveri | llvm-readobj -symbols -s | FileCheck %s --check-prefix=ELF
+@linkonce_odr_global_program = linkonce_odr addrspace(1) global i32 0
+@linkonce_global_program = linkonce addrspace(1) global i32 0
@internal_global_program = internal addrspace(1) global i32 0
@common_global_program = common addrspace(1) global i32 0
@external_global_program = addrspace(1) global i32 0
+@linkonce_odr_global_agent = linkonce_odr addrspace(1) global i32 0, section ".hsadata_global_agent"
+@linkonce_global_agent = linkonce addrspace(1) global i32 0, section ".hsadata_global_agent"
@internal_global_agent = internal addrspace(1) global i32 0, section ".hsadata_global_agent"
@common_global_agent = common addrspace(1) global i32 0, section ".hsadata_global_agent"
@external_global_agent = addrspace(1) global i32 0, section ".hsadata_global_agent"
@@ -16,6 +20,18 @@ define void @test() {
ret void
}
+; ASM: .amdgpu_hsa_module_global linkonce_odr_global
+; ASM: .size linkonce_odr_global_program, 4
+; ASM: .hsadata_global_program
+; ASM: linkonce_odr_global_program:
+; ASM: .long 0
+
+; ASM: .amdgpu_hsa_module_global linkonce_global
+; ASM: .size linkonce_global_program, 4
+; ASM: .hsadata_global_program
+; ASM: linkonce_global_program:
+; ASM: .long 0
+
; ASM: .amdgpu_hsa_module_global internal_global
; ASM: .size internal_global_program, 4
; ASM: .hsadata_global_program
@@ -34,6 +50,18 @@ define void @test() {
; ASM: external_global_program:
; ASM: .long 0
+; ASM: .amdgpu_hsa_module_global linkonce_odr_global
+; ASM: .size linkonce_odr_global_agent, 4
+; ASM: .hsadata_global_agent
+; ASM: linkonce_odr_global_agent:
+; ASM: .long 0
+
+; ASM: .amdgpu_hsa_module_global linkonce_global
+; ASM: .size linkonce_global_agent, 4
+; ASM: .hsadata_global_agent
+; ASM: linkonce_global_agent:
+; ASM: .long 0
+
; ASM: .amdgpu_hsa_module_global internal_global
; ASM: .size internal_global_agent, 4
; ASM: .hsadata_global_agent
@@ -124,6 +152,34 @@ define void @test() {
; ELF: }
; ELF: Symbol {
+; ELF: Name: linkonce_global_agent
+; ELF: Size: 4
+; ELF: Binding: Local
+; ELF: Section: .hsadata_global_agent
+; ELF: }
+
+; ELF: Symbol {
+; ELF: Name: linkonce_global_program
+; ELF: Size: 4
+; ELF: Binding: Local
+; ELF: Section: .hsadata_global_program
+; ELF: }
+
+; ELF: Symbol {
+; ELF: Name: linkonce_odr_global_agent
+; ELF: Size: 4
+; ELF: Binding: Local
+; ELF: Section: .hsadata_global_agent
+; ELF: }
+
+; ELF: Symbol {
+; ELF: Name: linkonce_odr_global_program
+; ELF: Size: 4
+; ELF: Binding: Local
+; ELF: Section: .hsadata_global_program
+; ELF: }
+
+; ELF: Symbol {
; ELF: Name: external_global_agent
; ELF: Size: 4
; ELF: Binding: Global
OpenPOWER on IntegriCloud