You can use @code_lowered to inspect the lowered code of a function, for example:
julia> @code_lowered modify1(1, 2)
CodeInfo(
1 ─ %1 = a + b
└── return %1
)
julia> @code_lowered modify2(1, 2)
CodeInfo(
1 ─ %1 = a + b
│ %2 = a - b
│ %3 = %1 * %2
└── return %3
)
julia> @code_lowered modify3(1, 2)
CodeInfo(
1 ─ %1 = Main.modify1(a, b)
│ %2 = a - b
│ %3 = %1 * %2
└── return %3
)
You can also use @code_native to inspect the actual assembly instructions:
julia> @code_native debuginfo=:none modify1(1, 2)
.text
pushq %rbp
movq %rsp, %rbp
leaq (%rcx,%rdx), %rax
popq %rbp
retq
nopw (%rax,%rax)
julia> @code_native debuginfo=:none modify2(1, 2)
.text
pushq %rbp
movq %rsp, %rbp
leaq (%rdx,%rcx), %rax
subq %rdx, %rcx
imulq %rcx, %rax
popq %rbp
retq
nopw %cs:(%rax,%rax)
julia> @code_native debuginfo=:none modify3(1, 2)
.text
pushq %rbp
movq %rsp, %rbp
leaq (%rdx,%rcx), %rax
subq %rdx, %rcx
imulq %rcx, %rax
popq %rbp
retq
nopw %cs:(%rax,%rax)