37 lines
1.2 KiB
Diff
37 lines
1.2 KiB
Diff
# UNDF: UNDF-2026-000000294
|
|
--- a/spirv_cross.cpp
|
|
+++ b/spirv_cross.cpp
|
|
@@ -2605,14 +2605,12 @@ void Compiler::add_implied_read_expression(SPIRExpression &e, uint32_t source)
|
|
{
|
|
- auto itr = find(begin(e.implied_read_expressions), end(e.implied_read_expressions), ID(source));
|
|
- if (itr == end(e.implied_read_expressions))
|
|
- e.implied_read_expressions.push_back(source);
|
|
+ // O(1) insert — set semantics handle deduplication automatically.
|
|
+ e.implied_read_expressions.insert(source);
|
|
}
|
|
|
|
void Compiler::add_implied_read_expression(SPIRAccessChain &e, uint32_t source)
|
|
{
|
|
- auto itr = find(begin(e.implied_read_expressions), end(e.implied_read_expressions), ID(source));
|
|
- if (itr == end(e.implied_read_expressions))
|
|
- e.implied_read_expressions.push_back(source);
|
|
+ e.implied_read_expressions.insert(source);
|
|
}
|
|
|
|
--- a/spirv_cross_parsed_ir.hpp
|
|
+++ b/spirv_cross_parsed_ir.hpp
|
|
@@ -1,6 +1,7 @@
|
|
// (excerpt — only changed fields shown)
|
|
struct SPIRExpression : IVariant
|
|
{
|
|
- SmallVector<ID> implied_read_expressions;
|
|
+ std::unordered_set<uint32_t> implied_read_expressions;
|
|
...
|
|
};
|
|
|
|
struct SPIRAccessChain : IVariant
|
|
{
|
|
- SmallVector<ID> implied_read_expressions;
|
|
+ std::unordered_set<uint32_t> implied_read_expressions;
|
|
...
|
|
};
|