Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update the branch weight metadata in JumpThreading pass.
In JumpThreading pass, the branch weight metadata is not updated after CFG modification. Consider the jump threading on PredBB, BB, and SuccBB. After jump threading, the weight on BB->SuccBB should be adjusted as some of it is contributed by the edge PredBB->BB, which doesn't exist anymore. This patch tries to update the edge weight in metadata on BB->SuccBB by scaling it by 1 - Freq(PredBB->BB) / Freq(BB->SuccBB). Differential revision: http://reviews.llvm.org/D10979 llvm-svn: 250089
- Loading branch information
Cong Hou
committed
Oct 12, 2015
1 parent
4a5f35c
commit 3320bcd
Showing
7 changed files
with
222 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
; RUN: opt -S -jump-threading %s | FileCheck %s | ||
|
||
; Test if edge weights are properly updated after jump threading. | ||
|
||
; CHECK: !2 = !{!"branch_weights", i32 22, i32 7} | ||
|
||
define void @foo(i32 %n) !prof !0 { | ||
entry: | ||
%cmp = icmp sgt i32 %n, 10 | ||
br i1 %cmp, label %if.then.1, label %if.else.1, !prof !1 | ||
|
||
if.then.1: | ||
tail call void @a() | ||
br label %if.cond | ||
|
||
if.else.1: | ||
tail call void @b() | ||
br label %if.cond | ||
|
||
if.cond: | ||
%cmp1 = icmp sgt i32 %n, 5 | ||
br i1 %cmp1, label %if.then.2, label %if.else.2, !prof !2 | ||
|
||
if.then.2: | ||
tail call void @c() | ||
br label %if.end | ||
|
||
if.else.2: | ||
tail call void @d() | ||
br label %if.end | ||
|
||
if.end: | ||
ret void | ||
} | ||
|
||
declare void @a() | ||
declare void @b() | ||
declare void @c() | ||
declare void @d() | ||
|
||
!0 = !{!"function_entry_count", i64 1} | ||
!1 = !{!"branch_weights", i32 10, i32 5} | ||
!2 = !{!"branch_weights", i32 10, i32 1} |