We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Nick Lewycky reported that dominators we're getting updated for this .ll file correctly:
declare void %use1(int)
void %f(int %i, bool %c) { entry: %A = seteq int %i, 0 br bool %A, label %brtrue, label %brfalse
brtrue: %B = phi bool [ true, %brtrue ], [ false, %entry ] call void %use1(int %i) br bool %B, label %brtrue, label %brfalse
brfalse: call void %use1(int %i) ret void }
Correct is:
Inorder Dominator Tree: [1] %entry [2] %entry.brfalse_crit_edge [2] %entry.brtrue_crit_edge [3] %brtrue [4] %brtrue.brfalse_crit_edge [4] %brtrue.brtrue_crit_edge [2] %brfalse
Computed is:
Inorder Dominator Tree: [1] %entry [2] %brtrue [3] %brtrue.brtrue_crit_edge [3] %brtrue.brfalse_crit_edge [2] %brfalse [2] %entry.brtrue_crit_edge [2] %entry.brfalse_crit_edge
BCE assumes that the broken edge block can never dominate anything, which is incorrect in this case.
-Chris
The text was updated successfully, but these errors were encountered:
assigned to @lattner
Sorry, something went wrong.
Fixed. Testcase here: Analysis/Dominators/2006-10-02-BreakCritEdges.ll
Patch/analysis here: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20061002/038237.html
lattner
No branches or pull requests
Extended Description
Nick Lewycky reported that dominators we're getting updated for this .ll file correctly:
declare void %use1(int)
void %f(int %i, bool %c) {
entry:
%A = seteq int %i, 0
br bool %A, label %brtrue, label %brfalse
brtrue:
%B = phi bool [ true, %brtrue ], [ false, %entry ]
call void %use1(int %i)
br bool %B, label %brtrue, label %brfalse
brfalse:
call void %use1(int %i)
ret void
}
Correct is:
Inorder Dominator Tree:
[1] %entry
[2] %entry.brfalse_crit_edge
[2] %entry.brtrue_crit_edge
[3] %brtrue
[4] %brtrue.brfalse_crit_edge
[4] %brtrue.brtrue_crit_edge
[2] %brfalse
Computed is:
Inorder Dominator Tree:
[1] %entry
[2] %brtrue
[3] %brtrue.brtrue_crit_edge
[3] %brtrue.brfalse_crit_edge
[2] %brfalse
[2] %entry.brtrue_crit_edge
[2] %entry.brfalse_crit_edge
BCE assumes that the broken edge block can never dominate anything, which is incorrect in this case.
-Chris
The text was updated successfully, but these errors were encountered: