mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
The inliner performs some kind of dead code elimination as it goes, but there are cases that are not really caught by it. We might at some point consider teaching the inliner about them, but it is OK for now to run GlobalOpt + GlobalDCE in tandem as their benefits generally outweight the cost, making the whole pipeline faster. This fixes PR34652. Differential Revision: https://reviews.llvm.org/D38154 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314997 91177308-0d34-0410-b5e6-96231b3b80d8
26 lines
590 B
LLVM
26 lines
590 B
LLVM
; RUN: opt -mtriple=amdgcn-- -O1 -S -inline-threshold=1 -amdgpu-early-inline-all %s | FileCheck %s
|
|
|
|
@c_alias = alias i32 (i32), i32 (i32)* @callee
|
|
|
|
define i32 @callee(i32 %x) {
|
|
entry:
|
|
%mul1 = mul i32 %x, %x
|
|
%mul2 = mul i32 %mul1, %x
|
|
%mul3 = mul i32 %mul1, %mul2
|
|
%mul4 = mul i32 %mul3, %mul2
|
|
%mul5 = mul i32 %mul4, %mul3
|
|
ret i32 %mul5
|
|
}
|
|
|
|
; CHECK-LABEL: @caller
|
|
; CHECK: mul i32
|
|
; CHECK-NOT: call i32
|
|
|
|
; CHECK: define i32 @c_alias
|
|
define amdgpu_kernel void @caller(i32 %x) {
|
|
entry:
|
|
%res = call i32 @callee(i32 %x)
|
|
store volatile i32 %res, i32 addrspace(1)* undef
|
|
ret void
|
|
}
|