1
- ; RUN: opt -S -passes=' dxil-finalize-linkage,globaldce' -mtriple=dxil-unknown-shadermodel6.5-compute %s | FileCheck %s
1
+ ; RUN: opt -S -dxil-finalize-linkage -mtriple=dxil-unknown-shadermodel6.5-compute %s | FileCheck %s
2
2
; RUN: llc %s --filetype=asm -o - | FileCheck %s --check-prefixes=CHECK-LLC
3
3
4
4
target triple = "dxilv1.5-pc-shadermodel6.5-compute"
5
5
6
6
; DXILFinalizeLinkage changes linkage of all functions that are hidden to
7
- ; internal, converts private global variables to internal linkage, and removes
8
- ; unused global variables.
9
-
10
- ; CHECK-NOT: @aTile
11
- @aTile = hidden addrspace (3 ) global [4 x [1 x i32 ]] zeroinitializer , align 4
12
-
13
- ; CHECK-NOT: @bTile
14
- @bTile = hidden addrspace (3 ) global [1 x <1 x i32 >] zeroinitializer , align 4
7
+ ; internal, converts private globals to internal linkage, and converts external globals
8
+ ; with no usage to internal linkage.
15
9
16
10
; CHECK: @switch.table = internal unnamed_addr constant [4 x i32]
17
11
@switch.table = private unnamed_addr constant [4 x i32 ] [i32 1 , i32 257 , i32 65793 , i32 16843009 ], align 4
@@ -34,6 +28,16 @@ target triple = "dxilv1.5-pc-shadermodel6.5-compute"
34
28
; CHECK: @hidden_var = hidden global i32
35
29
@hidden_var = hidden global i32 1 , align 4
36
30
31
+ ; Running the whole pipeline should remove unused global variables
32
+
33
+ ; CHECK: @aTile = internal addrspace(3) global
34
+ ; CHECK-LLC-NOT: @aTile
35
+ @aTile = hidden addrspace (3 ) global [4 x [1 x i32 ]] zeroinitializer , align 4
36
+
37
+ ; CHECK: @bTile = internal addrspace(3) global
38
+ ; CHECK-LLC-NOT: @bTile
39
+ @bTile = hidden addrspace (3 ) global [1 x [1 x i32 ]] zeroinitializer , align 4
40
+
37
41
define void @anchor_function () #0 {
38
42
entry:
39
43
%0 = load i32 , ptr @switch.table , align 4
0 commit comments