Files
clang-p2996/llvm/test/Transforms/GlobalOpt/shrink-global-to-bool.ll
Christudasan Devadasan 167ff5280d [GlobalOpt] Do not shrink global to bool for an unfavorable AS
Do not call `TryToShrinkGlobalToBoolean` for address spaces
that don't allow initializers. It inserts an initializer value
while shrinking to bool. Used the target hook introduced with
D109337 to skip this call for the restricted address spaces.

Reviewed By: tra

Differential Revision: https://reviews.llvm.org/D109823
2021-09-16 23:13:30 -04:00

40 lines
1.1 KiB
LLVM

; RUN: opt -passes=globalopt --mtriple=amdgcn-amd-amdhsa < %s -S | FileCheck %s
; REQUIRES: amdgpu-registered-target
@gvar = internal unnamed_addr global i32 undef
@lvar = internal unnamed_addr addrspace(3) global i32 undef
; Should optimize @gvar.
; CHECK-NOT: @gvar
; Negative test for AS(3). Skip shrink global to bool optimization.
; CHECK: @lvar = internal unnamed_addr addrspace(3) global i32 undef
define void @test_global_var() {
; CHECK-LABEL: @test_global_var(
; CHECK: store volatile i32 10, i32* undef, align 4
;
entry:
store i32 10, i32* @gvar
br label %exit
exit:
%ld = load i32, i32* @gvar
store volatile i32 %ld, i32* undef
ret void
}
define void @test_lds_var() {
; CHECK-LABEL: @test_lds_var(
; CHECK: store i32 10, i32 addrspace(3)* @lvar, align 4
; CHECK: [[LD:%.*]] = load i32, i32 addrspace(3)* @lvar, align 4
; CHECK: store volatile i32 [[LD]], i32* undef, align 4
;
entry:
store i32 10, i32 addrspace(3)* @lvar
br label %exit
exit:
%ld = load i32, i32 addrspace(3)* @lvar
store volatile i32 %ld, i32* undef
ret void
}