<p dir="auto">This is illegal construction, but rather than being an error, it creates a traceback.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="julia&gt; versioninfo()
Julia Version 1.6.1
Commit 6aaedecc44 (2021-04-23 05:59 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Celeron(R) CPU J3455 @ 1.50GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, goldmont)

julia&gt; T = Vector{Tuple{:a, :b}}
Vector{Tuple{:a, :b}} (alias for Array{Tuple{:a, :b}, 1})

julia&gt; T()
Internal error: encountered unexpected error in runtime:
MethodError(f=Core.Compiler.widenconst, args=(:a,), world=0x00000000000010a8)
jl_method_error_bare at /buildworker/worker/package_linux64/build/src/gf.c:1812
jl_method_error at /buildworker/worker/package_linux64/build/src/gf.c:1830
jl_lookup_generic_ at /buildworker/worker/package_linux64/build/src/gf.c:2400 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2415
..."><pre class="notranslate"><code class="notranslate">julia&gt; versioninfo()
Julia Version 1.6.1
Commit 6aaedecc44 (2021-04-23 05:59 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Celeron(R) CPU J3455 @ 1.50GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, goldmont)

julia&gt; T = Vector{Tuple{:a, :b}}
Vector{Tuple{:a, :b}} (alias for Array{Tuple{:a, :b}, 1})

julia&gt; T()
Internal error: encountered unexpected error in runtime:
MethodError(f=Core.Compiler.widenconst, args=(:a,), world=0x00000000000010a8)
jl_method_error_bare at /buildworker/worker/package_linux64/build/src/gf.c:1812
jl_method_error at /buildworker/worker/package_linux64/build/src/gf.c:1830
jl_lookup_generic_ at /buildworker/worker/package_linux64/build/src/gf.c:2400 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2415
...
</code></pre></div>
<p dir="auto">I am working on package <a href="https://github.com/rryi/BitStructs.jl">BitStructs</a> and encounter a strange error running my benchmarks with julia 1.6.0-RC1.</p>
<h3 dir="auto">Environment:</h3>
<p dir="auto">System Ryzen 1700, 16 GB RAM, Windows 10 Pro, version 20H2<br>
Julia 64 bit 1.6.0-rc1 (2021-02-06)<br>
Package <a href="https://github.com/rryi/BitStructs.jl">https://github.com/rryi/BitStructs.jl</a>, commit 50ea2e46b77d098ba61ab65d15e31aa289848e24</p>
<h3 dir="auto">Steps to reproduce:</h3>
<ul dir="auto">
<li>use a Win10 machine</li>
<li>install julia 1.6.0 RC1 64 bit</li>
<li>download/clone package BitStructs.jl to a local directory</li>
<li>enter that directory in a CMD shell</li>
<li>start julia</li>
<li>activate package dir</li>
<li>add BenchmarkTools (I did it some days ago with v0.5.0. Retry with version 0.6.0 had the same result)</li>
<li>exit julia</li>
<li>execute in CMD shell: julia test\crash.jl</li>
</ul>
<p dir="auto">My log for that, showing the crash under 1.6.0RC1</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Microsoft Windows [Version 10.0.19042.867]
(c) 2020 Microsoft Corporation. Alle Rechte vorbehalten.

C:\Users\RR\julia\BitStructs&gt;julia test\crash.jl
  Activating environment at `C:\Users\RR\julia\BitStructs\Project.toml`
S(S_RUNNING, BIGMINUS, Float16(-1.0), true, false, false, true, 0, 'a', 'c', 0x0001, 0x0002, 3, 4)BitStruct{NamedTuple{(:status, :strange, :sign, :flag1, :flag2, :flag3, :flag4, :bit1, :ac, :lc, :id1, :id2, :delta1, :delta2), Tuple{ProcStatus, Strange, Sign, Bool, Bool, Bool, Bool, BInt{1}, AsciiChar, Latin1Char, BUInt{9}, BUInt{12}, BInt{9}, BInt{9}}}} 0x0200c00802c78531
  status::ProcStatus = S_RUNNING
  strange::Strange = BIGMINUS
  sign::Sign = -1.0
  flag1::Bool = true
  flag2::Bool = false
  flag3::Bool = false
  flag4::Bool = true
  bit1::BInt{1} = 0
  ac::AsciiChar = 'a'
  lc::Latin1Char = 'c'
  id1::BUInt{9} = 0x0000000000000001
  id2::BUInt{12} = 0x0000000000000002
  delta1::BInt{9} = 3
  delta2::BInt{9} = 4
end
struct/BitStruct simple field access ENTER:
  2.700 ns (0 allocations: 0 bytes)
  2.700 ns (0 allocations: 0 bytes)
struct/BitStruct field access in @noinline function ENTER:
  2.600 ns (0 allocations: 0 bytes)
  9.500 ns (0 allocations: 0 bytes)
set 2 fields on struct then BitStruct ENTER:
  2.600 ns (0 allocations: 0 bytes)
  358.571 ns (3 allocations: 48 bytes)
set 2 fields on struct then BitStruct (large struct) ENTER:
  2.600 ns (0 allocations: 0 bytes)
the statements executed by set2fields run, if executed directly
BitStruct{NamedTuple{(:status, :strange, :sign, :flag1, :flag2, :flag3, :flag4, :bit1, :ac, :lc, :id1, :id2, :delta1, :delta2), Tuple{ProcStatus, Strange, Sign, Bool, Bool, Bool, Bool, BInt{1}, AsciiChar, Latin1Char, BUInt{9}, BUInt{12}, BInt{9}, BInt{9}}}} 0x0200c00804c78511
  status::ProcStatus = S_RUNNING
  strange::Strange = BIGMINUS
  sign::Sign = -1.0
  flag1::Bool = false
  flag2::Bool = false
  flag3::Bool = false
  flag4::Bool = true
  bit1::BInt{1} = 0
  ac::AsciiChar = 'a'
  lc::Latin1Char = 'c'
  id1::BUInt{9} = 0x0000000000000002
  id2::BUInt{12} = 0x0000000000000002
  delta1::BInt{9} = 3
  delta2::BInt{9} = 4
end
Calling set2fields(bs) causes a crash

Unreachable reached at 00000000610aa1b6

Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ILLEGAL_INSTRUCTION at 0x610aa1b6 -- set2fields at C:\Users\RR\julia\BitStructs\test\benchmark.jl:293
in expression starting at C:\Users\RR\julia\BitStructs\test\benchmark.jl:316
set2fields at C:\Users\RR\julia\BitStructs\test\benchmark.jl:293
unknown function (ip: 00000000610aa1d9)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:575
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:669
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:879
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:827
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:888 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:931
eval at .\boot.jl:360 [inlined]
include_string at .\loading.jl:1090
_include at .\loading.jl:1144
include at .\client.jl:444
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:575
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:669
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:879
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:827
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:888 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:931
eval at .\boot.jl:360 [inlined]
include_string at .\loading.jl:1090
_include at .\loading.jl:1144
include at .\Base.jl:386
exec_options at .\client.jl:285
_start at .\client.jl:485
jfptr__start_33914.clone_1 at C:\RRtool\julia-1.6.0-RC1\lib\julia\sys.dll (unknown line)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
true_main at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:557
repl_entrypoint at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:699
mainCRTStartup at /cygdrive/c/buildbot/worker/package_win64/build/cli\loader_exe.c:51
BaseThreadInitThunk at C:\WINDOWS\System32\KERNEL32.DLL (unknown line)
RtlUserThreadStart at C:\WINDOWS\SYSTEM32\ntdll.dll (unknown line)
Allocations: 19362754 (Pool: 19359441; Big: 3313); GC: 70

C:\Users\RR\julia\BitStructs&gt;"><pre class="notranslate"><code class="notranslate">Microsoft Windows [Version 10.0.19042.867]
(c) 2020 Microsoft Corporation. Alle Rechte vorbehalten.

C:\Users\RR\julia\BitStructs&gt;julia test\crash.jl
  Activating environment at `C:\Users\RR\julia\BitStructs\Project.toml`
S(S_RUNNING, BIGMINUS, Float16(-1.0), true, false, false, true, 0, 'a', 'c', 0x0001, 0x0002, 3, 4)BitStruct{NamedTuple{(:status, :strange, :sign, :flag1, :flag2, :flag3, :flag4, :bit1, :ac, :lc, :id1, :id2, :delta1, :delta2), Tuple{ProcStatus, Strange, Sign, Bool, Bool, Bool, Bool, BInt{1}, AsciiChar, Latin1Char, BUInt{9}, BUInt{12}, BInt{9}, BInt{9}}}} 0x0200c00802c78531
  status::ProcStatus = S_RUNNING
  strange::Strange = BIGMINUS
  sign::Sign = -1.0
  flag1::Bool = true
  flag2::Bool = false
  flag3::Bool = false
  flag4::Bool = true
  bit1::BInt{1} = 0
  ac::AsciiChar = 'a'
  lc::Latin1Char = 'c'
  id1::BUInt{9} = 0x0000000000000001
  id2::BUInt{12} = 0x0000000000000002
  delta1::BInt{9} = 3
  delta2::BInt{9} = 4
end
struct/BitStruct simple field access ENTER:
  2.700 ns (0 allocations: 0 bytes)
  2.700 ns (0 allocations: 0 bytes)
struct/BitStruct field access in @noinline function ENTER:
  2.600 ns (0 allocations: 0 bytes)
  9.500 ns (0 allocations: 0 bytes)
set 2 fields on struct then BitStruct ENTER:
  2.600 ns (0 allocations: 0 bytes)
  358.571 ns (3 allocations: 48 bytes)
set 2 fields on struct then BitStruct (large struct) ENTER:
  2.600 ns (0 allocations: 0 bytes)
the statements executed by set2fields run, if executed directly
BitStruct{NamedTuple{(:status, :strange, :sign, :flag1, :flag2, :flag3, :flag4, :bit1, :ac, :lc, :id1, :id2, :delta1, :delta2), Tuple{ProcStatus, Strange, Sign, Bool, Bool, Bool, Bool, BInt{1}, AsciiChar, Latin1Char, BUInt{9}, BUInt{12}, BInt{9}, BInt{9}}}} 0x0200c00804c78511
  status::ProcStatus = S_RUNNING
  strange::Strange = BIGMINUS
  sign::Sign = -1.0
  flag1::Bool = false
  flag2::Bool = false
  flag3::Bool = false
  flag4::Bool = true
  bit1::BInt{1} = 0
  ac::AsciiChar = 'a'
  lc::Latin1Char = 'c'
  id1::BUInt{9} = 0x0000000000000002
  id2::BUInt{12} = 0x0000000000000002
  delta1::BInt{9} = 3
  delta2::BInt{9} = 4
end
Calling set2fields(bs) causes a crash

Unreachable reached at 00000000610aa1b6

Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ILLEGAL_INSTRUCTION at 0x610aa1b6 -- set2fields at C:\Users\RR\julia\BitStructs\test\benchmark.jl:293
in expression starting at C:\Users\RR\julia\BitStructs\test\benchmark.jl:316
set2fields at C:\Users\RR\julia\BitStructs\test\benchmark.jl:293
unknown function (ip: 00000000610aa1d9)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:575
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:669
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:879
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:827
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:888 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:931
eval at .\boot.jl:360 [inlined]
include_string at .\loading.jl:1090
_include at .\loading.jl:1144
include at .\client.jl:444
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
do_call at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:115
eval_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:204
eval_stmt_value at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:155 [inlined]
eval_body at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:575
jl_interpret_toplevel_thunk at /cygdrive/c/buildbot/worker/package_win64/build/src\interpreter.c:669
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:879
jl_toplevel_eval_flex at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:827
jl_toplevel_eval at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:888 [inlined]
jl_toplevel_eval_in at /cygdrive/c/buildbot/worker/package_win64/build/src\toplevel.c:931
eval at .\boot.jl:360 [inlined]
include_string at .\loading.jl:1090
_include at .\loading.jl:1144
include at .\Base.jl:386
exec_options at .\client.jl:285
_start at .\client.jl:485
jfptr__start_33914.clone_1 at C:\RRtool\julia-1.6.0-RC1\lib\julia\sys.dll (unknown line)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1703 [inlined]
true_main at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:557
repl_entrypoint at /cygdrive/c/buildbot/worker/package_win64/build/src\jlapi.c:699
mainCRTStartup at /cygdrive/c/buildbot/worker/package_win64/build/cli\loader_exe.c:51
BaseThreadInitThunk at C:\WINDOWS\System32\KERNEL32.DLL (unknown line)
RtlUserThreadStart at C:\WINDOWS\SYSTEM32\ntdll.dll (unknown line)
Allocations: 19362754 (Pool: 19359441; Big: 3313); GC: 70

C:\Users\RR\julia\BitStructs&gt;
</code></pre></div>
<p dir="auto">here the run with julia 1.5.3, no crash:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="C:\Users\RR\julia\BitStructs&gt;C:\RRtool\julia-1.5.3\bin\julia.exe test\crash.jl
 Activating environment at `C:\Users\RR\julia\BitStructs\Project.toml`
S(S_RUNNING, BIGMINUS, Float16(-1.0), true, false, false, true, 0, 'a', 'c', 0x0001, 0x0002, 3, 4)BitStruct{NamedTuple{(:status, :strange, :sign, :flag1, :flag2, :flag3, :flag4, :bit1, :ac, :lc, :id1, :id2, :delta1, :delta2),Tuple{ProcStatus,Strange,Sign,Bool,Bool,Bool,Bool,BInt{1},AsciiChar,Latin1Char,BUInt{9},BUInt{12},BInt{9},BInt{9}}}} 0x0200c00802c78531
  status::ProcStatus = S_RUNNING
  strange::Strange = BIGMINUS
  sign::Sign = -1.0
  flag1::Bool = true
  flag2::Bool = false
  flag3::Bool = false
  flag4::Bool = true
  bit1::BInt{1} = 0
  ac::AsciiChar = 'a'
  lc::Latin1Char = 'c'
  id1::BUInt{9} = 0x0000000000000001
  id2::BUInt{12} = 0x0000000000000002
  delta1::BInt{9} = 3
  delta2::BInt{9} = 4
end
struct/BitStruct simple field access ENTER:
  2.699 ns (0 allocations: 0 bytes)
  397.995 ns (1 allocation: 32 bytes)
struct/BitStruct field access in @noinline function ENTER:
  2.399 ns (0 allocations: 0 bytes)
  364.423 ns (1 allocation: 32 bytes)
set 2 fields on struct then BitStruct ENTER:
  2.399 ns (0 allocations: 0 bytes)
  8.733 µs (5 allocations: 96 bytes)
set 2 fields on struct then BitStruct (large struct) ENTER:
  2.399 ns (0 allocations: 0 bytes)
the statements executed by set2fields run, if executed directly
BitStruct{NamedTuple{(:status, :strange, :sign, :flag1, :flag2, :flag3, :flag4, :bit1, :ac, :lc, :id1, :id2, :delta1, :delta2),Tuple{ProcStatus,Strange,Sign,Bool,Bool,Bool,Bool,BInt{1},AsciiChar,Latin1Char,BUInt{9},BUInt{12},BInt{9},BInt{9}}}} 0x0200c00804c78511
  status::ProcStatus = S_RUNNING
  strange::Strange = BIGMINUS
  sign::Sign = -1.0
  flag1::Bool = false
  flag2::Bool = false
  flag3::Bool = false
  flag4::Bool = true
  bit1::BInt{1} = 0
  ac::AsciiChar = 'a'
  lc::Latin1Char = 'c'
  id1::BUInt{9} = 0x0000000000000002
  id2::BUInt{12} = 0x0000000000000002
  delta1::BInt{9} = 3
  delta2::BInt{9} = 4
end
Calling set2fields(bs) causes a crash
b1 set field in loop by /= ENTER:
  2.122 µs (0 allocations: 0 bytes)
b2 set field in loop by set(..) ENTER:
  2.133 µs (0 allocations: 0 bytes)
struct/BitStruct: access 4 fields in a loop ENTER:
  103.389 ns (0 allocations: 0 bytes)
  66.400 µs (70 allocations: 1.09 KiB)
struct/BitStruct: write 4 fields in a loop ENTER:
  173.947 ns (0 allocations: 0 bytes)
struct/BitStruct: access 4 fields in a loop, large struct ENTER:
  104.979 ns (0 allocations: 0 bytes)
  105.200 µs (0 allocations: 0 bytes)
struct/BitStruct: write 4 fields in a loop, large struct ENTER:
  175.520 ns (0 allocations: 0 bytes)
struct/BitStruct: access 4 fields, direct code ENTER:
  1.799 ns (0 allocations: 0 bytes)
  1.070 µs (1 allocation: 32 bytes)
function parameter benchmark: struct/BitStruct/parameterlist ENTER:
  1.590 µs (17 allocations: 1.38 KiB)
  1.610 µs (18 allocations: 1.39 KiB)

C:\Users\RR\julia\BitStructs&gt;"><pre class="notranslate"><code class="notranslate">C:\Users\RR\julia\BitStructs&gt;C:\RRtool\julia-1.5.3\bin\julia.exe test\crash.jl
 Activating environment at `C:\Users\RR\julia\BitStructs\Project.toml`
S(S_RUNNING, BIGMINUS, Float16(-1.0), true, false, false, true, 0, 'a', 'c', 0x0001, 0x0002, 3, 4)BitStruct{NamedTuple{(:status, :strange, :sign, :flag1, :flag2, :flag3, :flag4, :bit1, :ac, :lc, :id1, :id2, :delta1, :delta2),Tuple{ProcStatus,Strange,Sign,Bool,Bool,Bool,Bool,BInt{1},AsciiChar,Latin1Char,BUInt{9},BUInt{12},BInt{9},BInt{9}}}} 0x0200c00802c78531
  status::ProcStatus = S_RUNNING
  strange::Strange = BIGMINUS
  sign::Sign = -1.0
  flag1::Bool = true
  flag2::Bool = false
  flag3::Bool = false
  flag4::Bool = true
  bit1::BInt{1} = 0
  ac::AsciiChar = 'a'
  lc::Latin1Char = 'c'
  id1::BUInt{9} = 0x0000000000000001
  id2::BUInt{12} = 0x0000000000000002
  delta1::BInt{9} = 3
  delta2::BInt{9} = 4
end
struct/BitStruct simple field access ENTER:
  2.699 ns (0 allocations: 0 bytes)
  397.995 ns (1 allocation: 32 bytes)
struct/BitStruct field access in @noinline function ENTER:
  2.399 ns (0 allocations: 0 bytes)
  364.423 ns (1 allocation: 32 bytes)
set 2 fields on struct then BitStruct ENTER:
  2.399 ns (0 allocations: 0 bytes)
  8.733 µs (5 allocations: 96 bytes)
set 2 fields on struct then BitStruct (large struct) ENTER:
  2.399 ns (0 allocations: 0 bytes)
the statements executed by set2fields run, if executed directly
BitStruct{NamedTuple{(:status, :strange, :sign, :flag1, :flag2, :flag3, :flag4, :bit1, :ac, :lc, :id1, :id2, :delta1, :delta2),Tuple{ProcStatus,Strange,Sign,Bool,Bool,Bool,Bool,BInt{1},AsciiChar,Latin1Char,BUInt{9},BUInt{12},BInt{9},BInt{9}}}} 0x0200c00804c78511
  status::ProcStatus = S_RUNNING
  strange::Strange = BIGMINUS
  sign::Sign = -1.0
  flag1::Bool = false
  flag2::Bool = false
  flag3::Bool = false
  flag4::Bool = true
  bit1::BInt{1} = 0
  ac::AsciiChar = 'a'
  lc::Latin1Char = 'c'
  id1::BUInt{9} = 0x0000000000000002
  id2::BUInt{12} = 0x0000000000000002
  delta1::BInt{9} = 3
  delta2::BInt{9} = 4
end
Calling set2fields(bs) causes a crash
b1 set field in loop by /= ENTER:
  2.122 µs (0 allocations: 0 bytes)
b2 set field in loop by set(..) ENTER:
  2.133 µs (0 allocations: 0 bytes)
struct/BitStruct: access 4 fields in a loop ENTER:
  103.389 ns (0 allocations: 0 bytes)
  66.400 µs (70 allocations: 1.09 KiB)
struct/BitStruct: write 4 fields in a loop ENTER:
  173.947 ns (0 allocations: 0 bytes)
struct/BitStruct: access 4 fields in a loop, large struct ENTER:
  104.979 ns (0 allocations: 0 bytes)
  105.200 µs (0 allocations: 0 bytes)
struct/BitStruct: write 4 fields in a loop, large struct ENTER:
  175.520 ns (0 allocations: 0 bytes)
struct/BitStruct: access 4 fields, direct code ENTER:
  1.799 ns (0 allocations: 0 bytes)
  1.070 µs (1 allocation: 32 bytes)
function parameter benchmark: struct/BitStruct/parameterlist ENTER:
  1.590 µs (17 allocations: 1.38 KiB)
  1.610 µs (18 allocations: 1.39 KiB)

C:\Users\RR\julia\BitStructs&gt;
</code></pre></div>