Skip to content

Instantly share code, notes, and snippets.

@filmackay
Created February 17, 2014 23:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save filmackay/9061231 to your computer and use it in GitHub Desktop.
Save filmackay/9061231 to your computer and use it in GitHub Desktop.
Differences in named v anonymous code generation
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