Skip to content

Commit

Permalink
Revert "[HIP] [AlwaysInliner] Disable AlwaysInliner to eliminate unde…
Browse files Browse the repository at this point in the history
…fined symbols"

This reverts commit 03375a3.
  • Loading branch information
gandhi56 committed Oct 15, 2021
1 parent 4594f81 commit 1830ec9
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 37 deletions.
6 changes: 3 additions & 3 deletions clang/lib/Driver/ToolChains/Clang.cpp
Expand Up @@ -5089,9 +5089,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
}

// Enable -mconstructor-aliases except on darwin, where we have to work around
// a linker bug (see <rdar://problem/7651567>), and CUDA device code, where
// aliases aren't supported.
if (!RawTriple.isOSDarwin() && !RawTriple.isNVPTX())
// a linker bug (see <rdar://problem/7651567>), and CUDA/AMDGPU device code,
// where aliases aren't supported.
if (!RawTriple.isOSDarwin() && !RawTriple.isNVPTX() && !RawTriple.isAMDGPU())
CmdArgs.push_back("-mconstructor-aliases");

// Darwin's kernel doesn't support guard variables; just die if we
Expand Down
17 changes: 0 additions & 17 deletions clang/test/CodeGenCUDA/amdgpu-alias-undef-symbols.cu

This file was deleted.

5 changes: 0 additions & 5 deletions llvm/lib/Target/AMDGPU/AMDGPUAlwaysInlinePass.cpp
Expand Up @@ -15,7 +15,6 @@
#include "AMDGPU.h"
#include "AMDGPUTargetMachine.h"
#include "Utils/AMDGPUBaseInfo.h"
#include "llvm/CodeGen/CommandFlags.h"
#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
#include "llvm/Support/CommandLine.h"
Expand Down Expand Up @@ -91,13 +90,9 @@ static bool alwaysInlineImpl(Module &M, bool GlobalOpt) {

SmallPtrSet<Function *, 8> FuncsToAlwaysInline;
SmallPtrSet<Function *, 8> FuncsToNoInline;
Triple TT(M.getTargetTriple());

for (GlobalAlias &A : M.aliases()) {
if (Function* F = dyn_cast<Function>(A.getAliasee())) {
if (TT.getArch() == Triple::amdgcn &&
A.getLinkage() != GlobalValue::InternalLinkage)
continue;
A.replaceAllUsesWith(F);
AliasesToRemove.push_back(&A);
}
Expand Down
5 changes: 1 addition & 4 deletions llvm/lib/Target/AMDGPU/AMDGPUResourceUsageAnalysis.cpp
Expand Up @@ -29,8 +29,6 @@
#include "SIMachineFunctionInfo.h"
#include "llvm/Analysis/CallGraph.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/IR/GlobalAlias.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/Target/TargetMachine.h"

using namespace llvm;
Expand Down Expand Up @@ -63,8 +61,7 @@ static const Function *getCalleeFunction(const MachineOperand &Op) {
assert(Op.getImm() == 0);
return nullptr;
}
if (auto *GA = dyn_cast<GlobalAlias>(Op.getGlobal()))
return cast<Function>(GA->getOperand(0));

return cast<Function>(Op.getGlobal());
}

Expand Down
15 changes: 7 additions & 8 deletions llvm/test/CodeGen/AMDGPU/inline-calls.ll
@@ -1,6 +1,6 @@
; RUN: llc -mtriple amdgcn-unknown-linux-gnu -mcpu=tahiti -verify-machineinstrs < %s | FileCheck %s
; RUN: llc -mtriple amdgcn-unknown-linux-gnu -mcpu=tonga -verify-machineinstrs < %s | FileCheck %s
; RUN: llc -mtriple r600-unknown-linux-gnu -mcpu=redwood -verify-machineinstrs < %s | FileCheck %s --check-prefix=R600
; RUN: llc -march=amdgcn -mcpu=tahiti -verify-machineinstrs < %s | FileCheck %s
; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck %s
; RUN: llc -march=r600 -mcpu=redwood -verify-machineinstrs < %s | FileCheck %s

; ALL-NOT: {{^}}func:
define internal i32 @func(i32 %a) {
Expand All @@ -9,7 +9,7 @@ entry:
ret i32 %tmp0
}

; CHECK: {{^}}kernel:
; ALL: {{^}}kernel:
; GCN-NOT: s_swappc_b64
define amdgpu_kernel void @kernel(i32 addrspace(1)* %out) {
entry:
Expand All @@ -18,13 +18,12 @@ entry:
ret void
}

; CHECK: func_alias
; R600-NOT: func_alias
; CHECK-NOT: func_alias
; ALL-NOT: func_alias
@func_alias = alias i32 (i32), i32 (i32)* @func

; CHECK-NOT: {{^}}kernel3:
; ALL: {{^}}kernel3:
; GCN-NOT: s_swappc_b64
; R600: {{^}}kernel3:
define amdgpu_kernel void @kernel3(i32 addrspace(1)* %out) {
entry:
%tmp0 = call i32 @func_alias(i32 1)
Expand Down

0 comments on commit 1830ec9

Please sign in to comment.