ClangBuiltLinux/llvm-distributors-conf-2021

[CFP] Snapdragon LLVM Toolchain

skganesan opened this issue · 6 comments

Title

Snapdragon LLVM Toolchain

Author

Sivakumar Ganesan, sganesa@quicinc.com, Qualcomm Innovation Center

Distribution

Snapdragon LLVM Compiler Toolchain is distributed for building Android NDK and Bare metal images

Abstract (optional)

Snapdragon LLVM Compiler Toolchain, which is available for Android NDK and Bare metal images, enables use of compilers in a broader range of configurations, providing performance and code size advantage particularly on Qualcomm Snapdragon micro-architectures. Snapdragon LLVM compiler has provided performance gains to a variety of Android applications and libraries.
This talk will discuss on how Snapdragon LLVM compiler manages to stay close to the upstream HEAD and challenges faced during the distribution process

What's unique about the environment you package LLVM for? (optional)

What makes your distribution of LLVM unique? (optional)

  • Stay close to upstream HEAD:
    We bring upstream patches and merge it in our source tree via automation. The patches are merged out-of-order as we encounter conflicts, build or test issues while bringing in each commit. We use this concept of drain point to bring in all commits till a commit of interest for distribution is merged
  • Support Windows and Linux Host

What might others learn from your experience? (optional)

There are a wide range of challenges that we face when trying to distribute the toolchain. Some of those challenges include the following issues that are seen with upstream patches:

  • Hard to determine dependencies between patches as upstream no longer uses svn id in commit message
  • Do not know when patches are getting reverted
  • cmake changes resulting in false positive builds, for example, builds missing some output binaries
  • Major upstream code changes causing significant effort to make it downstream compatible

Another distribution challenge that we encounter is with the LLVM toolchain version that Android AOSP builds come with. New AOSP drops at times use a different LLVM upstream toolchain version resulting in build issues because of mismatch between upstream LLVM compiler and Snapdragon LLVM

What could be improved in upstream LLVM to make working with it easier as a downstream packager? (optional)

Anything that makes the HEAD revision more stable: for instance, enforcing precheckin verification for each commit, means to determine dependent patches etc.


Reminder that this is meant to be a 15 minute lightning talk; enough to pique
interests but follow up should be done after. Slides can always include links
to more info; we will ask that you send a PR to this repo with your slides when
they are ready.

Thanks for taking the time to write up a CFP; we'd be overjoyed to have you present at LLVM Distributors Conf 2021! If you still plan on presenting, this is a reminder to get started on your slides for next week. Once they're done, we will contact you about submitting a PDF of your slides as either a pull request to this repository or via email to the organizer. We hope to have a schedule finalized by EOW; we may iterate on the schedule based on whether presenters have conflicts. Please keep this issue open for attendees to ask questions, or close this issue if you no longer plan on attending. Reminder to keep your talk concise (15 minutes); we wont be doing time for questions in order to fit as much content as possible. Attendees should ask questions here in this github issue.

@skganesan do you mind switching times with @tstellar ?

Everything ok with your setup?

yes, will do; I can present and you can just say "next slide" and I'll advance them for you.