diff --git a/test/boundscheck.jl b/test/boundscheck.jl new file mode 100644 index 0000000000000..0eb35ca60f1db --- /dev/null +++ b/test/boundscheck.jl @@ -0,0 +1,61 @@ + +module TestBoundsCheck + +using Base.Test + +# test for boundscheck block eliminated at same level +function A1() + r = 0 + @boundscheck r += 1 + return r +end + +function A1_inbounds() + r = 0 + @inbounds begin + @boundscheck r += 1 + end + return r +end + +@test A1() == 1 +@test A1_inbounds() == 0 + +# test for boundscheck block eliminated one layer deep +function A2() + r = A1()+1 + return r +end + +function A2_inbounds() + @inbounds r = A1()+1 + return r +end + +@test A2() == 2 +@test A2_inbounds() == 1 + +# test boundscheck NOT eliminated two layers deep + +function A3() + r = A2()+1 + return r +end + +function A3_inbounds() + @inbounds r = A2()+1 + return r +end + +@test A3() == 3 +@test A3_inbounds() == 3 + +@inline B() = A1() + 1 +function A3_inbounds2() + @inbounds r = B()+1 + return r +end + +# @test A3_inbounds2() == 3 + +end \ No newline at end of file diff --git a/test/choosetests.jl b/test/choosetests.jl index f485972243497..b9346a96758ee 100644 --- a/test/choosetests.jl +++ b/test/choosetests.jl @@ -32,7 +32,8 @@ function choosetests(choices = []) "nullable", "meta", "profile", "libgit2", "docs", "markdown", "base64", "serialize", "functors", "misc", "threads", "enums", "cmdlineargs", "i18n", "workspace", "libdl", "int", - "checked", "intset", "floatfuncs", "compile", "parallel", "inline" + "checked", "intset", "floatfuncs", "compile", "parallel", "inline", + "boundscheck" ] if Base.USE_GPL_LIBS