diff --git a/test/testhelpers/llvmpasses.jl b/test/testhelpers/llvmpasses.jl new file mode 100644 index 0000000000000..0b443c3eb1535 --- /dev/null +++ b/test/testhelpers/llvmpasses.jl @@ -0,0 +1,27 @@ +# This file is a part of Julia. License is MIT: https://julialang.org/license + +using InteractiveUtils +using Printf + +# get a temporary directory +dir = ARGS[1] +rm(dir, force=true, recursive=true) +mkdir(dir) + +# toggle between unoptimized (CHECK/LOWER) and optimized IR (FINAL). +optimize=false +if length(ARGS) >= 2 + optimize = ARGS[2]=="-O" +end + +# Emit LLVM IR to dir +counter = 0 +function emit(f, tt...) + global counter + name = nameof(f) + open(joinpath(dir, @sprintf("%05d-%s.ll", counter, name)), "w") do io + code_llvm(io, f, tt, raw=true, optimize=optimize, dump_module=true, debuginfo=:none) + end + counter+=1 +end +