mirror of
https://github.com/intel/llvm.git
synced 2026-01-17 06:40:01 +08:00
Revert "[NVPTX] Use .common linkage for common globals (#84416)"
This reverts commit 8f0012d3dc.
The common-linkage.ll test fails with ptxas enabled.
This commit is contained in:
@@ -1019,6 +1019,7 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
|
||||
const DataLayout &DL = getDataLayout();
|
||||
|
||||
// GlobalVariables are always constant pointers themselves.
|
||||
PointerType *PTy = GVar->getType();
|
||||
Type *ETy = GVar->getValueType();
|
||||
|
||||
if (GVar->hasExternalLinkage()) {
|
||||
@@ -1026,9 +1027,6 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
|
||||
O << ".visible ";
|
||||
else
|
||||
O << ".extern ";
|
||||
} else if (GVar->hasCommonLinkage() &&
|
||||
GVar->getAddressSpace() == ADDRESS_SPACE_GLOBAL) {
|
||||
O << ".common ";
|
||||
} else if (GVar->hasLinkOnceLinkage() || GVar->hasWeakLinkage() ||
|
||||
GVar->hasAvailableExternallyLinkage() ||
|
||||
GVar->hasCommonLinkage()) {
|
||||
@@ -1140,7 +1138,7 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
|
||||
}
|
||||
|
||||
O << ".";
|
||||
emitPTXAddressSpace(GVar->getAddressSpace(), O);
|
||||
emitPTXAddressSpace(PTy->getAddressSpace(), O);
|
||||
|
||||
if (isManaged(*GVar)) {
|
||||
if (STI.getPTXVersion() < 40 || STI.getSmVersion() < 30) {
|
||||
@@ -1169,8 +1167,8 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
|
||||
// Ptx allows variable initilization only for constant and global state
|
||||
// spaces.
|
||||
if (GVar->hasInitializer()) {
|
||||
if ((GVar->getAddressSpace() == ADDRESS_SPACE_GLOBAL) ||
|
||||
(GVar->getAddressSpace() == ADDRESS_SPACE_CONST)) {
|
||||
if ((PTy->getAddressSpace() == ADDRESS_SPACE_GLOBAL) ||
|
||||
(PTy->getAddressSpace() == ADDRESS_SPACE_CONST)) {
|
||||
const Constant *Initializer = GVar->getInitializer();
|
||||
// 'undef' is treated as there is no value specified.
|
||||
if (!Initializer->isNullValue() && !isa<UndefValue>(Initializer)) {
|
||||
@@ -1185,7 +1183,7 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
|
||||
!isa<UndefValue>(GVar->getInitializer())) {
|
||||
report_fatal_error("initial value of '" + GVar->getName() +
|
||||
"' is not allowed in addrspace(" +
|
||||
Twine(GVar->getAddressSpace()) + ")");
|
||||
Twine(PTy->getAddressSpace()) + ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1204,8 +1202,8 @@ void NVPTXAsmPrinter::printModuleLevelGV(const GlobalVariable *GVar,
|
||||
ElementSize = DL.getTypeStoreSize(ETy);
|
||||
// Ptx allows variable initilization only for constant and
|
||||
// global state spaces.
|
||||
if (((GVar->getAddressSpace() == ADDRESS_SPACE_GLOBAL) ||
|
||||
(GVar->getAddressSpace() == ADDRESS_SPACE_CONST)) &&
|
||||
if (((PTy->getAddressSpace() == ADDRESS_SPACE_GLOBAL) ||
|
||||
(PTy->getAddressSpace() == ADDRESS_SPACE_CONST)) &&
|
||||
GVar->hasInitializer()) {
|
||||
const Constant *Initializer = GVar->getInitializer();
|
||||
if (!isa<UndefValue>(Initializer) && !Initializer->isNullValue()) {
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
|
||||
; RUN: %if ptxas %{ llc < %s -march=nvptx64 -mcpu=sm_20 | %ptxas-verify %}
|
||||
|
||||
; CHECK: .common .global .align 4 .u32 g
|
||||
@g = common addrspace(1) global i32 0, align 4
|
||||
|
||||
; CHECK: .weak .const .align 4 .u32 c
|
||||
@c = common addrspace(4) global i32 0, align 4
|
||||
|
||||
; CHECK: .weak .shared .align 4 .u32 s
|
||||
@s = common addrspace(3) global i32 0, align 4
|
||||
|
||||
define i32 @f1() {
|
||||
%1 = load i32, ptr addrspace(1) @g
|
||||
ret i32 %1
|
||||
}
|
||||
|
||||
define i32 @f4() {
|
||||
%1 = load i32, ptr addrspace(4) @c
|
||||
ret i32 %1
|
||||
}
|
||||
|
||||
define i32 @f3() {
|
||||
%1 = load i32, ptr addrspace(3) @s
|
||||
ret i32 %1
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s
|
||||
; RUN: %if ptxas %{ llc < %s -march=nvptx64 -mcpu=sm_20 | %ptxas-verify %}
|
||||
|
||||
; CHECK: .common .global .align 4 .u32 g
|
||||
; CHECK: .weak .global .align 4 .u32 g
|
||||
@g = common addrspace(1) global i32 zeroinitializer
|
||||
|
||||
define i32 @func0() {
|
||||
|
||||
Reference in New Issue
Block a user