Skip to content

Commit 1a6893e

Browse files
committed
Add documentation for -Zverbose-asm
1 parent c15a698 commit 1a6893e

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# `verbose-asm`
2+
3+
The tracking issue for this feature is: [#126802](https://github.com/rust-lang/rust/issues/126802).
4+
5+
------------------------
6+
7+
This enables passing `-Zverbose-asm` to get contextual comments added by LLVM.
8+
9+
Sample code:
10+
11+
```rust
12+
#[no_mangle]
13+
pub fn foo(a: i32, b: i32) -> i32 {
14+
a + b
15+
}
16+
```
17+
18+
Default output:
19+
20+
```asm
21+
foo:
22+
push rax
23+
add edi, esi
24+
mov dword ptr [rsp + 4], edi
25+
seto al
26+
jo .LBB0_2
27+
mov eax, dword ptr [rsp + 4]
28+
pop rcx
29+
ret
30+
.LBB0_2:
31+
lea rdi, [rip + .L__unnamed_1]
32+
mov rax, qword ptr [rip + core::panicking::panic_const::panic_const_add_overflow::h9c85248fe0d735b2@GOTPCREL]
33+
call rax
34+
35+
.L__unnamed_2:
36+
.ascii "/app/example.rs"
37+
38+
.L__unnamed_1:
39+
.quad .L__unnamed_2
40+
.asciz "\017\000\000\000\000\000\000\000\004\000\000\000\005\000\000"
41+
```
42+
43+
With `-Zverbose-asm`:
44+
45+
```asm
46+
foo: # @foo
47+
# %bb.0:
48+
push rax
49+
add edi, esi
50+
mov dword ptr [rsp + 4], edi # 4-byte Spill
51+
seto al
52+
jo .LBB0_2
53+
# %bb.1:
54+
mov eax, dword ptr [rsp + 4] # 4-byte Reload
55+
pop rcx
56+
ret
57+
.LBB0_2:
58+
lea rdi, [rip + .L__unnamed_1]
59+
mov rax, qword ptr [rip + core::panicking::panic_const::panic_const_add_overflow::h9c85248fe0d735b2@GOTPCREL]
60+
call rax
61+
# -- End function
62+
.L__unnamed_2:
63+
.ascii "/app/example.rs"
64+
65+
.L__unnamed_1:
66+
.quad .L__unnamed_2
67+
.asciz "\017\000\000\000\000\000\000\000\004\000\000\000\005\000\000"
68+
69+
# DW_AT_external
70+
```

0 commit comments

Comments
 (0)