diff options
author | Nathan Chong <nathan.chong@gmail.com> | 2013-03-07 18:42:49 +0000 |
---|---|---|
committer | Nathan Chong <nathan.chong@gmail.com> | 2013-03-07 18:42:49 +0000 |
commit | fb4518948982987d371eb7f14e4879909115e887 (patch) | |
tree | f0dfa6c1cd8f829af72859be94eba0443c5170a7 /Source/Core/LinearSets.cs | |
parent | f12ca28f791c1e8cda2f6ff18f7e4605203674c8 (diff) |
Fix LeastCommonAncestor method in Graph module
Solves a problem with Uniformity Analysis in GPUVerify.
"The least common ancestor of two nodes u and v in a rooted tree T is a node w
that is an ancestor of both u and v and that has the greatest depth in T" (CLR).
This is needed when computing the control dependence relation of a CFG. In this
case, we need the least common ancestor of a pair of nodes in the dominator tree
so we can reuse the 'intersect' function given by Cooper et al in "A Simple,
Fast Dominance Algorithm."
The old code picked the ancestor of both u and v that has the *least* depth in
T. This caused uniformity analysis, in GPUVerify, to be imprecise (adding blocks
as non-uniform when they were infact uniform).
Diffstat (limited to 'Source/Core/LinearSets.cs')
0 files changed, 0 insertions, 0 deletions