dianqk's blog


2023 Summary

Posted on

Summary

This year marks my first continuous involvement in open-source contributions. I've fixed numerous mis-compilation, added missing optimizations, and included LTO, debugging info, built-in functions, WebAssembly, and even an issue with Apple Silicon.

During this journey, I was fortunate to receive numerous invaluable help, especially from those who reviewed my pull requests. Thank everyone very much. (●´∀`●)

Highlight:

I've categorized my contributions using these emojis:

LLVM

Commit history: https://github.com/llvm/llvm-project/commits?author=DianQK&since=2023-01-01&until=2023-12-31.

By the way, my first LLVM commit was [MachineOutliner] Fix the side effect of outlined function when the register is implicit use and implicit-def in the same instruction. D112911.

  1. 🍻🦀⏳ [SimplifyCFG] Check if the return instruction causes undefined behavior D144319 Blocked by PR69498
  2. 🍻⏳ [SimplifyCFG] Improve the precision of PtrValueMayBeModified D144563 Follows D144319, not blocked by PR69498
  3. 💢🦀 [SROA] Remove UB-implying metadata when promoting speculative instruction. D148456 Fixes PR110256
  4. 💢🦀 [GlobalOpt] Don't replace the aliasee if it has other references. D145293 Fixes PR108030
  5. 🦀🐦ℹ️ [Verifier] definition subprograms cannot be nested within DICompositeType when enabling ODR. D152095
  6. 🐦ℹ️ [Coroutine][DebugInfo] Update the linkage name of the declaration of coro-split functions in the debug info. D157184
  7. 💢🦀 [TailCallElim] Remove the readonly attribute of byval. D156793
  8. 💢🦀 [JumpThreading] Invalidate LVI after combineMetadataForCSE. #65219
  9. 🍻🦀 [EarlyCSE] Compare GEP instructions based on offset #65875
  10. 🍻🦀 [SimplifyCFG] Hoist common instructions on switch #67077
  11. 💢🦀 [MemCpyOpt] Merge alias metadatas when replacing arguments #67539
  12. 💢🦀 [LVI][CVP] Treat undef like a full range #68190
  13. 💢 [LVI][CVP] Treat undef like a full range on abs(x, false) #68711
  14. 💢🦀 [MemCpyOpt] Combine alias metadatas when replacing byval arguments #70580
  15. 💢🦀🍎 [AArch64] ORRWrs is copy instruction when there's no implicit def of the X register #75184

Rust

Commit history: https://github.com/rust-lang/rust/commits?author=DianQK&since=2023-01-01&until=2023-12-31.

Apart from simple pull requests like updating test cases, my contributions mainly revolved around built-ins and LTO:

  1. Add the no-builtins attribute to functions when no_builtins is applied at the crate level. #113716
  2. Restore #![no_builtins] crates participation in LTO. #113923
  3. Add thinlto support to codegen, assembly and coverage tests #118036
  4. Avoid adding builtin functions to symbols.o #118568

Despite addressing many issues during this process, unfortunately, there are still some known issues that need resolution. I'll submit MCP once these issues are resolved.

Ruslin

I use Joplin for note-taking, but I don't want Joplin's Android client. Hence, I developed a compatible client: ruslin-android. I apologize for the lack of recent updates. I plan to adjust my spare time next year. I'm also considering desktop development.

Other Projects

Personal Details

DianQK is just a casual Chinese pseudonym formed from the pinyin abbreviation of "靛(dian)" and "青(qing)", where "靛青" refers to indigo. It has led to confusion about how to call me. To resolve this, I asked ChatGPT for a name: Quentin Dian. So, you can call me Dian or dianqk.

I switched entirely from Arch Linux to NixOS, a fantastic operating system where I can manage everything with code.

To enhance my efficiency, I also purchased a GPD handheld console. I complete most of the code above using the GPD during my subway commutes. I assembled a machine with a 7950X processor, cutting my local build time in half. I can now complete a full compile in just a few minutes. I also bought a Mac Mini (M2) to test issues on that platform.

GPG Win 4