File tree Expand file tree Collapse file tree 2 files changed +12
-3
lines changed Expand file tree Collapse file tree 2 files changed +12
-3
lines changed Original file line number Diff line number Diff line change 14
14
#include " llvm/ADT/StringSwitch.h"
15
15
#include " llvm/Support/ErrorHandling.h"
16
16
#include " llvm/TargetParser/Triple.h"
17
+ #include < optional>
17
18
#include < string>
18
19
19
20
using namespace clang ::driver;
@@ -37,6 +38,11 @@ bool isLegalShaderModel(Triple &T) {
37
38
if (Version.getSubminor ())
38
39
return false ;
39
40
41
+ // DXIL Version should be set as SubArch
42
+ if (T.getSubArch () == Triple::NoSubArch) {
43
+ return false ;
44
+ }
45
+
40
46
auto Kind = T.getEnvironment ();
41
47
42
48
switch (Kind) {
@@ -136,9 +142,8 @@ std::optional<std::string> tryParseProfile(StringRef Profile) {
136
142
break ;
137
143
}
138
144
if (SubArch == llvm::Triple::NoSubArch) {
139
- report_fatal_error (
140
- " No DXIL version found for specified Shader Model version" ,
141
- /* gen_crash_diag*/ false );
145
+ // No DXIL Version corresponding to specified Shader Model version found
146
+ return std::nullopt;
142
147
}
143
148
T.setArch (Triple::ArchType::dxil, SubArch);
144
149
T.setOSName (Triple::getOSTypeName (Triple::OSType::ShaderModel).str () +
Original file line number Diff line number Diff line change 39
39
// Invaliddxil target with no version number
40
40
// RUN: not %clang -target dxil--shadermodel6.2-msvc %s -S -o /dev/null 2>&1 | FileCheck --check-prefix=CHECK-BAD-TARGET %s
41
41
42
+ // Invalid target profile
43
+ // RUN: not %clang_dxc -Tlib_6_9 -fcgl -Fo - %s 2>&1 | FileCheck %s --check-prefix=CHECK-INVALID-PROFILE
44
+
42
45
// Non-dxil targets
43
46
//
44
47
// RUN: not %clang -target x86_64-unknown-unknown %s -S -o /dev/null 2>&1 | FileCheck --check-prefix=CHECK-BAD-TARGET %s
52
55
// CHECK-BAD-ENV: error: shader stage '{{.*}}' in target '{{.*}}' is invalid for HLSL code generation
53
56
// CHECK-BAD-ENV-DRV: error: version '{{.*}}' in target triple '{{.*}}' is invalid
54
57
// CHECK-BAD-TARGET: error: HLSL code generation is unsupported for target '{{.*}}'
58
+ // CHECK-INVALID-PROFILE: error: invalid profile : {{.*}}
55
59
56
60
[shader ("pixel" )]
57
61
void main () {}
You can’t perform that action at this time.
0 commit comments