| // RUN: %clang_cc1 -triple spirv-unknown-vulkan1.3-vertex -std=hlsl2021 \ |
| // RUN: -finclude-default-header -disable-llvm-passes -emit-llvm -o - %s \ |
| // RUN: | FileCheck %s --check-prefix=O0 |
| // RUN: %clang_cc1 -triple spirv-unknown-vulkan1.3-vertex -std=hlsl2021 \ |
| // RUN: -finclude-default-header -O2 -emit-llvm -o - %s \ |
| // RUN: | FileCheck %s --check-prefix=O2 |
| // |
| // Confirm that the frontend creates addrspace(7) globals for all entry-point |
| // input parameters (O0), and that GlobalDCE removes the unused one at O2. |
| // A passing O2 run confirms that -fspv-preserve-interface requires a DCE guard. |
| |
| // Both input globals must be present before optimization. |
| // O0-DAG: @POSITION0 = external hidden thread_local addrspace(7) |
| // O0-DAG: @TEXCOORD0 = external hidden thread_local addrspace(7) |
| |
| // The used POSITION0 global must survive optimization. |
| // O2: @POSITION0 = external hidden thread_local{{.*}}addrspace(7) |
| |
| // The unused TEXCOORD0 global must be eliminated by GlobalDCE at -O2. |
| // O2-NOT: @TEXCOORD0 = {{.*}}addrspace(7) |
| |
| [shader("vertex")] |
| float4 main(float4 pos : POSITION0, float4 uv : TEXCOORD0) : SV_Position { |
| return pos; |
| } |