Skip to content

Commit c02053a

Browse files
committed
Compare functions by their names instead of constructing a pseudo-signature
Non-empty Function names are unique in LLVM IR. Update the expected test output accordingly
1 parent ae373d4 commit c02053a

File tree

2 files changed

+8
-35
lines changed

2 files changed

+8
-35
lines changed

llvm/lib/Target/DirectX/DXILShaderFlags.cpp

Lines changed: 4 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -70,34 +70,7 @@ static void updateFlags(ComputedShaderFlags &CSF, const Instruction &I) {
7070

7171
static bool compareFuncSFPairs(const FuncShaderFlagsMask &First,
7272
const FuncShaderFlagsMask &Second) {
73-
// Construct string representation of the functions in each pair
74-
// as "retTypefunctionNamearg1Typearg2Ty..." where the function signature is
75-
// retType functionName(arg1Type, arg2Ty,...). Spaces, braces and commas are
76-
// omitted in the string representation of the signature. This allows
77-
// determining a consistent lexicographical order of all functions by their
78-
// signatures.
79-
std::string FirstFunSig;
80-
std::string SecondFunSig;
81-
raw_string_ostream FRSO(FirstFunSig);
82-
raw_string_ostream SRSO(SecondFunSig);
83-
84-
// Return type
85-
First.first->getReturnType()->print(FRSO);
86-
Second.first->getReturnType()->print(SRSO);
87-
// Function name
88-
FRSO << First.first->getName();
89-
SRSO << Second.first->getName();
90-
// Argument types
91-
for (const Argument &Arg : First.first->args()) {
92-
Arg.getType()->print(FRSO);
93-
}
94-
for (const Argument &Arg : Second.first->args()) {
95-
Arg.getType()->print(SRSO);
96-
}
97-
FRSO.flush();
98-
SRSO.flush();
99-
100-
return FRSO.str().compare(SRSO.str()) < 0;
73+
return (First.first->getName().compare(Second.first->getName()) < 0);
10174
}
10275

10376
static DXILModuleShaderFlagsInfo computeFlags(Module &M) {
@@ -108,9 +81,9 @@ static DXILModuleShaderFlagsInfo computeFlags(Module &M) {
10881
// Each of the functions in a module are unique. Hence no prior shader flags
10982
// mask of the function should be present.
11083
if (MSFI.hasShaderFlagsMask(&F)) {
111-
M.getContext().diagnose(DiagnosticInfoShaderFlags(
112-
M, "Shader Flags mask for Function '" + Twine(F.getName()) +
113-
"' already exits"));
84+
M.getContext().diagnose(
85+
DiagnosticInfoShaderFlags(M, "Shader Flags mask for Function '" +
86+
F.getName() + "' already exists"));
11487
}
11588
ComputedShaderFlags CSF{};
11689
for (const auto &BB : F)

llvm/test/CodeGen/DirectX/ShaderFlags/double-extensions.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,31 @@ target triple = "dxil-pc-shadermodel6.7-library"
1313
; CHECK-NEXT: ; Double-precision extensions for 11.1
1414
; CHECK-NEXT: ; Note: extra DXIL module flags:
1515
; CHECK-NEXT: ;
16-
; CHECK-NEXT: ; Shader Flags mask for Function: test_sitofp_i64
16+
; CHECK-NEXT: ; Shader Flags mask for Function: test_fptosi_i64
1717
; CHECK-NEXT: ; Shader Flags Value: 0x00000044
1818
; CHECK-NEXT: ;
1919
; CHECK-NEXT: ; Note: shader requires additional functionality:
2020
; CHECK-NEXT: ; Double-precision floating point
2121
; CHECK-NEXT: ; Double-precision extensions for 11.1
2222
; CHECK-NEXT: ; Note: extra DXIL module flags:
2323
; CHECK-NEXT: ;
24-
; CHECK-NEXT: ; Shader Flags mask for Function: test_uitofp_i64
24+
; CHECK-NEXT: ; Shader Flags mask for Function: test_fptoui_i32
2525
; CHECK-NEXT: ; Shader Flags Value: 0x00000044
2626
; CHECK-NEXT: ;
2727
; CHECK-NEXT: ; Note: shader requires additional functionality:
2828
; CHECK-NEXT: ; Double-precision floating point
2929
; CHECK-NEXT: ; Double-precision extensions for 11.1
3030
; CHECK-NEXT: ; Note: extra DXIL module flags:
3131
; CHECK-NEXT: ;
32-
; CHECK-NEXT: ; Shader Flags mask for Function: test_fptoui_i32
32+
; CHECK-NEXT: ; Shader Flags mask for Function: test_sitofp_i64
3333
; CHECK-NEXT: ; Shader Flags Value: 0x00000044
3434
; CHECK-NEXT: ;
3535
; CHECK-NEXT: ; Note: shader requires additional functionality:
3636
; CHECK-NEXT: ; Double-precision floating point
3737
; CHECK-NEXT: ; Double-precision extensions for 11.1
3838
; CHECK-NEXT: ; Note: extra DXIL module flags:
3939
; CHECK-NEXT: ;
40-
; CHECK-NEXT: ; Shader Flags mask for Function: test_fptosi_i64
40+
; CHECK-NEXT: ; Shader Flags mask for Function: test_uitofp_i64
4141
; CHECK-NEXT: ; Shader Flags Value: 0x00000044
4242
; CHECK-NEXT: ;
4343
; CHECK-NEXT: ; Note: shader requires additional functionality:

0 commit comments

Comments
 (0)