Created
February 17, 2014 23:15
-
-
Save filmackay/9061231 to your computer and use it in GitHub Desktop.
Differences in named v anonymous code generation
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
function o1() | |
function f1(i); i; end | |
end | |
function o2() | |
f2(i) = i | |
end | |
function o3() | |
f3 = function(i); i; end | |
end | |
function o4() | |
f = i->i | |
end | |
code_llvm(o1, ()) | |
code_llvm(o2, ()) | |
code_llvm(o3, ()) | |
code_llvm(o4, ()) | |
define %jl_value_t* @julia_o115896() { | |
top: | |
%0 = alloca [5 x %jl_value_t*], align 8 | |
%.sub = getelementptr inbounds [5 x %jl_value_t*]* %0, i64 0, i64 0 | |
%1 = getelementptr [5 x %jl_value_t*]* %0, i64 0, i64 2, !dbg !2024 | |
store %jl_value_t* inttoptr (i64 6 to %jl_value_t*), %jl_value_t** %.sub, align 8 | |
%2 = load %jl_value_t*** @jl_pgcstack, align 8, !dbg !2024 | |
%3 = getelementptr [5 x %jl_value_t*]* %0, i64 0, i64 1, !dbg !2024 | |
%.c = bitcast %jl_value_t** %2 to %jl_value_t*, !dbg !2024 | |
store %jl_value_t* %.c, %jl_value_t** %3, align 8, !dbg !2024 | |
store %jl_value_t** %.sub, %jl_value_t*** @jl_pgcstack, align 8, !dbg !2024 | |
store %jl_value_t* null, %jl_value_t** %1, align 8, !dbg !2024 | |
%4 = getelementptr [5 x %jl_value_t*]* %0, i64 0, i64 3 | |
store %jl_value_t* null, %jl_value_t** %4, align 8 | |
%5 = getelementptr [5 x %jl_value_t*]* %0, i64 0, i64 4 | |
store %jl_value_t* null, %jl_value_t** %5, align 8 | |
%6 = load %jl_value_t** inttoptr (i64 140264582870160 to %jl_value_t**), align 16, !dbg !2025 | |
%7 = call %jl_value_t* @allocobj(i64 24), !dbg !2025 | |
%8 = getelementptr inbounds %jl_value_t* %7, i64 2, i32 0, !dbg !2025 | |
store %jl_value_t* %6, %jl_value_t** %8, align 8, !dbg !2025 | |
%9 = getelementptr inbounds %jl_value_t* %7, i64 0, i32 0, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 140264563857920 to %jl_value_t*), %jl_value_t** %9, align 8, !dbg !2025 | |
%10 = getelementptr inbounds %jl_value_t* %7, i64 1, i32 0, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 1 to %jl_value_t*), %jl_value_t** %10, align 8, !dbg !2025 | |
store %jl_value_t* %7, %jl_value_t** %4, align 8, !dbg !2025 | |
%11 = call %jl_value_t* @allocobj(i64 32), !dbg !2025 | |
%12 = getelementptr inbounds %jl_value_t* %11, i64 2, i32 0, !dbg !2025 | |
store %jl_value_t* %7, %jl_value_t** %12, align 8, !dbg !2025 | |
%13 = getelementptr inbounds %jl_value_t* %11, i64 0, i32 0, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 140264563857920 to %jl_value_t*), %jl_value_t** %13, align 8, !dbg !2025 | |
%14 = getelementptr inbounds %jl_value_t* %11, i64 1, i32 0, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 2 to %jl_value_t*), %jl_value_t** %14, align 8, !dbg !2025 | |
%15 = getelementptr inbounds %jl_value_t* %11, i64 3, i32 0, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 140264563870720 to %jl_value_t*), %jl_value_t** %15, align 8, !dbg !2025 | |
store %jl_value_t* %11, %jl_value_t** %4, align 8, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 140264664979008 to %jl_value_t*), %jl_value_t** %5, align 8, !dbg !2025 | |
%16 = call %jl_value_t* @jl_method_def(%jl_value_t* inttoptr (i64 140264596983984 to %jl_value_t*), %jl_value_t** %1, %jl_value_t* null, %jl_value_t* %11, %jl_value_t* inttoptr (i64 140264664979008 to %jl_value_t*)), !dbg !2025 | |
%17 = load %jl_value_t** %3, align 8, !dbg !2025 | |
%18 = getelementptr inbounds %jl_value_t* %17, i64 0, i32 0, !dbg !2025 | |
store %jl_value_t** %18, %jl_value_t*** @jl_pgcstack, align 8, !dbg !2025 | |
ret %jl_value_t* %16, !dbg !2025 | |
} | |
define %jl_value_t* @julia_o215897() { | |
top: | |
%0 = alloca [5 x %jl_value_t*], align 8 | |
%.sub = getelementptr inbounds [5 x %jl_value_t*]* %0, i64 0, i64 0 | |
%1 = getelementptr [5 x %jl_value_t*]* %0, i64 0, i64 2, !dbg !2024 | |
store %jl_value_t* inttoptr (i64 6 to %jl_value_t*), %jl_value_t** %.sub, align 8 | |
%2 = load %jl_value_t*** @jl_pgcstack, align 8, !dbg !2024 | |
%3 = getelementptr [5 x %jl_value_t*]* %0, i64 0, i64 1, !dbg !2024 | |
%.c = bitcast %jl_value_t** %2 to %jl_value_t*, !dbg !2024 | |
store %jl_value_t* %.c, %jl_value_t** %3, align 8, !dbg !2024 | |
store %jl_value_t** %.sub, %jl_value_t*** @jl_pgcstack, align 8, !dbg !2024 | |
store %jl_value_t* null, %jl_value_t** %1, align 8, !dbg !2024 | |
%4 = getelementptr [5 x %jl_value_t*]* %0, i64 0, i64 3 | |
store %jl_value_t* null, %jl_value_t** %4, align 8 | |
%5 = getelementptr [5 x %jl_value_t*]* %0, i64 0, i64 4 | |
store %jl_value_t* null, %jl_value_t** %5, align 8 | |
%6 = load %jl_value_t** inttoptr (i64 140264582870160 to %jl_value_t**), align 16, !dbg !2025 | |
%7 = call %jl_value_t* @allocobj(i64 24), !dbg !2025 | |
%8 = getelementptr inbounds %jl_value_t* %7, i64 2, i32 0, !dbg !2025 | |
store %jl_value_t* %6, %jl_value_t** %8, align 8, !dbg !2025 | |
%9 = getelementptr inbounds %jl_value_t* %7, i64 0, i32 0, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 140264563857920 to %jl_value_t*), %jl_value_t** %9, align 8, !dbg !2025 | |
%10 = getelementptr inbounds %jl_value_t* %7, i64 1, i32 0, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 1 to %jl_value_t*), %jl_value_t** %10, align 8, !dbg !2025 | |
store %jl_value_t* %7, %jl_value_t** %4, align 8, !dbg !2025 | |
%11 = call %jl_value_t* @allocobj(i64 32), !dbg !2025 | |
%12 = getelementptr inbounds %jl_value_t* %11, i64 2, i32 0, !dbg !2025 | |
store %jl_value_t* %7, %jl_value_t** %12, align 8, !dbg !2025 | |
%13 = getelementptr inbounds %jl_value_t* %11, i64 0, i32 0, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 140264563857920 to %jl_value_t*), %jl_value_t** %13, align 8, !dbg !2025 | |
%14 = getelementptr inbounds %jl_value_t* %11, i64 1, i32 0, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 2 to %jl_value_t*), %jl_value_t** %14, align 8, !dbg !2025 | |
%15 = getelementptr inbounds %jl_value_t* %11, i64 3, i32 0, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 140264563870720 to %jl_value_t*), %jl_value_t** %15, align 8, !dbg !2025 | |
store %jl_value_t* %11, %jl_value_t** %4, align 8, !dbg !2025 | |
store %jl_value_t* inttoptr (i64 140264664979744 to %jl_value_t*), %jl_value_t** %5, align 8, !dbg !2025 | |
%16 = call %jl_value_t* @jl_method_def(%jl_value_t* inttoptr (i64 140264597128592 to %jl_value_t*), %jl_value_t** %1, %jl_value_t* null, %jl_value_t* %11, %jl_value_t* inttoptr (i64 140264664979744 to %jl_value_t*)), !dbg !2025 | |
%17 = load %jl_value_t** %3, align 8, !dbg !2025 | |
%18 = getelementptr inbounds %jl_value_t* %17, i64 0, i32 0, !dbg !2025 | |
store %jl_value_t** %18, %jl_value_t*** @jl_pgcstack, align 8, !dbg !2025 | |
ret %jl_value_t* %16, !dbg !2025 | |
} | |
define %jl_value_t* @julia_o315898() { | |
top: | |
%0 = alloca [3 x %jl_value_t*], align 8 | |
%.sub = getelementptr inbounds [3 x %jl_value_t*]* %0, i64 0, i64 0 | |
%1 = getelementptr [3 x %jl_value_t*]* %0, i64 0, i64 2, !dbg !2024 | |
store %jl_value_t* inttoptr (i64 2 to %jl_value_t*), %jl_value_t** %.sub, align 8 | |
%2 = load %jl_value_t*** @jl_pgcstack, align 8, !dbg !2024 | |
%3 = getelementptr [3 x %jl_value_t*]* %0, i64 0, i64 1, !dbg !2024 | |
%.c = bitcast %jl_value_t** %2 to %jl_value_t*, !dbg !2024 | |
store %jl_value_t* %.c, %jl_value_t** %3, align 8, !dbg !2024 | |
store %jl_value_t** %.sub, %jl_value_t*** @jl_pgcstack, align 8, !dbg !2024 | |
store %jl_value_t* inttoptr (i64 140264664898528 to %jl_value_t*), %jl_value_t** %1, align 8, !dbg !2025 | |
%4 = load %jl_value_t** %3, align 8, !dbg !2025 | |
%5 = getelementptr inbounds %jl_value_t* %4, i64 0, i32 0, !dbg !2025 | |
store %jl_value_t** %5, %jl_value_t*** @jl_pgcstack, align 8, !dbg !2025 | |
ret %jl_value_t* inttoptr (i64 140264664898528 to %jl_value_t*), !dbg !2025 | |
} | |
define %jl_value_t* @julia_o415899() { | |
top: | |
%0 = alloca [3 x %jl_value_t*], align 8 | |
%.sub = getelementptr inbounds [3 x %jl_value_t*]* %0, i64 0, i64 0 | |
%1 = getelementptr [3 x %jl_value_t*]* %0, i64 0, i64 2, !dbg !2024 | |
store %jl_value_t* inttoptr (i64 2 to %jl_value_t*), %jl_value_t** %.sub, align 8 | |
%2 = load %jl_value_t*** @jl_pgcstack, align 8, !dbg !2024 | |
%3 = getelementptr [3 x %jl_value_t*]* %0, i64 0, i64 1, !dbg !2024 | |
%.c = bitcast %jl_value_t** %2 to %jl_value_t*, !dbg !2024 | |
store %jl_value_t* %.c, %jl_value_t** %3, align 8, !dbg !2024 | |
store %jl_value_t** %.sub, %jl_value_t*** @jl_pgcstack, align 8, !dbg !2024 | |
store %jl_value_t* inttoptr (i64 140264664900192 to %jl_value_t*), %jl_value_t** %1, align 8, !dbg !2025 | |
%4 = load %jl_value_t** %3, align 8, !dbg !2025 | |
%5 = getelementptr inbounds %jl_value_t* %4, i64 0, i32 0, !dbg !2025 | |
store %jl_value_t** %5, %jl_value_t*** @jl_pgcstack, align 8, !dbg !2025 | |
ret %jl_value_t* inttoptr (i64 140264664900192 to %jl_value_t*), !dbg !2025 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment