Skip to content

Instantly share code, notes, and snippets.

@nickdesaulniers
Created February 14, 2022 22:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nickdesaulniers/7f143bae821d86603294bf00b8bd5074 to your computer and use it in GitHub Desktop.
Save nickdesaulniers/7f143bae821d86603294bf00b8bd5074 to your computer and use it in GitHub Desktop.
--- slab.before.clang.txt 2022-02-14 14:40:46.324688583 -0800
+++ slab.after.clang.txt 2022-02-14 14:40:27.824562293 -0800
@@ -8,61 +8,51 @@
push %r15
push %r14
push %rbx
- sub $0x10,%rsp
- mov %gs:0x28,%rax
- mov %rax,0x8(%rsp)
test %rdi,%rdi
- je <kmem_cache_free+0x55>
+ je <kmem_cache_free+0x36>
mov %rsi,%r14
mov %rdi,%rbx
- mov 0x28(%rsp),%rsi
+ mov 0x18(%rsp),%rsi
mov 0x58(%rdi),%rcx
xchg %ax,%ax
- movq $0x0,(%rsp)
pushf
- pop (%rsp)
- mov (%rsp),%r15
+ pop %r15
cli
xchg %ax,%ax
mov %rbx,%rdi
mov %r14,%rsi
- call <kmem_cache_free+0x4b>
+ call <kmem_cache_free+0x2c>
test $0x200,%r15d
- je <kmem_cache_free+0x55>
+ je <kmem_cache_free+0x36>
sti
- mov %gs:0x28,%rax
- cmp 0x8(%rsp),%rax
- jne <kmem_cache_free+0x6f>
- add $0x10,%rsp
pop %rbx
pop %r14
pop %r15
ret
- call <kmem_cache_free+0x74>
- mov %gs:0x0(%rip),%eax # <kmem_cache_free+0x7b>
+ mov %gs:0x0(%rip),%eax # <kmem_cache_free+0x43>
mov %eax,%eax
- bt %rax,0x0(%rip) # <kmem_cache_free+0x85>
- jae <kmem_cache_free+0x2d>
- incl %gs:0x0(%rip) # <kmem_cache_free+0x8e>
- mov 0x0(%rip),%rax # <kmem_cache_free+0x95>
+ bt %rax,0x0(%rip) # <kmem_cache_free+0x4d>
+ jae <kmem_cache_free+0x1b>
+ incl %gs:0x0(%rip) # <kmem_cache_free+0x56>
+ mov 0x0(%rip),%rax # <kmem_cache_free+0x5d>
test %rax,%rax
- je <kmem_cache_free+0xa6>
+ je <kmem_cache_free+0x6e>
mov 0x8(%rax),%rdi
mov %r14,%rdx
- call <kmem_cache_free+0xa6>
- decl %gs:0x0(%rip) # <kmem_cache_free+0xad>
- jne <kmem_cache_free+0x2d>
- call <kmem_cache_free+0xb8>
- jmp <kmem_cache_free+0x2d>
+ call <kmem_cache_free+0x6e>
+ decl %gs:0x0(%rip) # <kmem_cache_free+0x75>
+ jne <kmem_cache_free+0x1b>
+ call <kmem_cache_free+0x7c>
+ jmp <kmem_cache_free+0x1b>
cmpq $0x0,0x50(%rbx)
- jne <kmem_cache_free+0x40>
+ jne <kmem_cache_free+0x21>
testl $0x80800,0x20(%rbx)
- jne <kmem_cache_free+0x40>
+ jne <kmem_cache_free+0x21>
movslq 0x74(%rbx),%rdx
mov %r14,%rdi
xor %esi,%esi
- call <kmem_cache_free+0xe3>
- jmp <kmem_cache_free+0x40>
+ call <kmem_cache_free+0x9c>
+ jmp <kmem_cache_free+0x21>
Disassembly of section .init.text:
# test clang before + after
make LLVM=1 -j72 defconfig
<manually enable CONFIG_SLAB=y via menuconfig>
make LLVM=1 -j72 mm/slab.o
objdump --no-show-raw-insn --no-addresses mm/slab.o --disassemble=kmem_cache_free > slab.before.clang.txt
b4 am https://lore.kernel.org/llvm/20220210223134.233757-1-morbo@google.com/ -o - | git am
make LLVM=1 -j72 mm/slab.o
objdump --no-show-raw-insn --no-addresses mm/slab.o --disassemble=kmem_cache_free > slab.after.clang.txt
make -j72 defconfig
<manually enable CONFIG_SLAB=y via menuconfig>
make -j72 mm/slab.o
objdump --no-show-raw-insn --no-addresses mm/slab.o --disassemble=kmem_cache_free > slab.after.gcc.txt
git reset --hard HEAD~
# no output
diff -u slab.before.gcc.txt slab.after.gcc.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment