Created
October 27, 2016 05:10
-
-
Save andrewrk/306522a196c67cb2d5a5a11ffa6b5edb to your computer and use it in GitHub Desktop.
Zig IR progress: IR analysis can inline loops
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
extern fn something(); | |
fn doSomethingTenTimes() { | |
{var i: i32 = 0; while (i < 10; i += 1) { | |
something(); | |
}} | |
} | |
fn doSomethingTenTimes { | |
Entry_0: | |
#1 | type | 1 | i32 | |
#2 | (integer literal)| 1 | 0 | |
#3 | void | - | var i: i32 = 0 | |
#8 | (unknown) | - | goto $WhileCond_4 | |
WhileCond_4: | |
#16 | (unknown) | 1 | &i | |
#17 | (unknown) | 1 | *#16 | |
#18 | (integer literal)| 1 | 10 | |
#19 | (unknown) | 1 | #17 < 10 | |
#20 | unreachable | - | if (#19) $WhileBody_5 else $WhileEnd_7 | |
WhileBody_5: | |
#21 | extern fn() | 1 | something | |
#22 | (unknown) | - | something() | |
#23 | void | 0 | {} | |
#24 | (unknown) | - | goto $WhileContinue_6 | |
WhileContinue_6: | |
#9 | (unknown) | 2 | &i | |
#10 | (unknown) | 1 | *#9 | |
#11 | (integer literal)| 1 | 1 | |
#12 | (unknown) | 1 | #10 + 1 | |
#13 | void | - | *#9 = #12 | |
#14 | void | 0 | {} | |
#15 | (unknown) | - | goto $WhileCond_4 | |
WhileEnd_7: | |
#25 | void | 1 | {} | |
#26 | unreachable | - | return {} | |
} | |
fn doSomethingTenTimes { // (analyzed) | |
Entry_0: | |
#3 | void | - | var i: i32 = 0 | |
#6 | (unknown) | - | something() | |
#9 | (unknown) | - | something() | |
#12 | (unknown) | - | something() | |
#15 | (unknown) | - | something() | |
#18 | (unknown) | - | something() | |
#21 | (unknown) | - | something() | |
#24 | (unknown) | - | something() | |
#27 | (unknown) | - | something() | |
#30 | (unknown) | - | something() | |
#33 | (unknown) | - | something() | |
#36 | unreachable | - | return {} | |
} | |
define internal fastcc void @_doSomethingTenTimes() #3 !dbg !4 { | |
Entry: | |
call void @something(), !dbg !9 | |
call void @something(), !dbg !9 | |
call void @something(), !dbg !9 | |
call void @something(), !dbg !9 | |
call void @something(), !dbg !9 | |
call void @something(), !dbg !9 | |
call void @something(), !dbg !9 | |
call void @something(), !dbg !9 | |
call void @something(), !dbg !9 | |
call void @something(), !dbg !9 | |
ret void, !dbg !13 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment