whitepaper: 352/169 — wave4 MEDIUM (hadoop/hbase/nova/neutron/openstack) + fix odl-0002 dup
This commit is contained in:
parent
9934133dcf
commit
835ae73b0f
82 changed files with 5931 additions and 6 deletions
40
defects/spirv-cross/patch/spirv-cross-0001.patch
Normal file
40
defects/spirv-cross/patch/spirv-cross-0001.patch
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
--- a/spirv_cfg.hpp
|
||||
+++ b/spirv_cfg.hpp
|
||||
@@ -78,6 +78,7 @@ private:
|
||||
std::vector<uint32_t> post_order;
|
||||
std::unordered_map<uint32_t, VisitOrder> visit_order;
|
||||
SmallVector<uint32_t> visit_stack;
|
||||
+ std::unordered_set<uint32_t> visit_stack_set; // O(1) membership mirror of visit_stack
|
||||
uint32_t last_visited_size = 0;
|
||||
|
||||
void post_order_visit_entry(uint32_t block);
|
||||
--- a/spirv_cfg.cpp
|
||||
+++ b/spirv_cfg.cpp
|
||||
@@ -99,6 +99,7 @@ void CFG::post_order_visit_entry(uint32_t block)
|
||||
{
|
||||
visit_stack.push_back(block);
|
||||
+ visit_stack_set.insert(block);
|
||||
|
||||
while (!visit_stack.empty())
|
||||
{
|
||||
@@ -118,6 +119,7 @@ void CFG::post_order_visit_entry(uint32_t block)
|
||||
while (!visit_stack.empty() && visit_order[visit_stack.back()].visited_branches)
|
||||
{
|
||||
post_order_visit_resolve(visit_stack.back());
|
||||
+ visit_stack_set.erase(visit_stack.back());
|
||||
visit_stack.pop_back();
|
||||
}
|
||||
}
|
||||
@@ -126,8 +128,7 @@ void CFG::post_order_visit_entry(uint32_t block)
|
||||
void CFG::visit_branch(uint32_t block_id)
|
||||
{
|
||||
// Prune obvious duplicates.
|
||||
- if (std::find(visit_stack.begin() + last_visited_size, visit_stack.end(), block_id) == visit_stack.end() &&
|
||||
- !has_visited_branch(block_id))
|
||||
+ if (visit_stack_set.find(block_id) == visit_stack_set.end() &&
|
||||
+ !has_visited_branch(block_id))
|
||||
{
|
||||
visit_stack.push_back(block_id);
|
||||
+ visit_stack_set.insert(block_id);
|
||||
}
|
||||
}
|
||||
36
defects/spirv-cross/patch/spirv-cross-0002.patch
Normal file
36
defects/spirv-cross/patch/spirv-cross-0002.patch
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
--- 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;
|
||||
...
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue