[LLVMdev] [RFC] Stripping unusable intrinsics
echristo at gmail.com
Wed Dec 10 17:39:49 PST 2014
On Wed Dec 10 2014 at 5:37:06 PM Chris Bieneman <beanz at apple.com> wrote:
> On Dec 10, 2014, at 4:22 PM, Eric Christopher <echristo at gmail.com> wrote:
> On Wed Dec 10 2014 at 3:57:25 PM Chris Bieneman <beanz at apple.com> wrote:
>> In my ongoing saga to improve LLVM for embedded use, we would like to
>> support stripping out unused intrinsics based on the LLVM targets actually
>> being built.
>> I’ve attached two patches.
>> The first is a new flag for tablegen to take a list of targets. If passed
>> tablegen will only emit intrinsics that either have empty target prefixes,
>> or target prefixes matching one of the targets in the list. If the flag is
>> not passed the behavior is unchanged. This patch can land today (subject to
>> The second patch is a WIP, and adds support to the CMake build system for
>> using the new tablegen flag, and for generating a new
>> llvm/Config/llvm-targets.h header which contains defines for each target
>> specified with LLVM_TARGETS_TO_BUILD.
>> This new header will allow us to #ifdef code using target-specific
>> intrinsics outside the targets, thus allowing us to strip out all the
>> unused intrinsics.
> I like the general idea and, as you asked on irc, will happily help with
> the autoconf changes. Do you have a small (even pseudo) code example of
> what the changes to the middle end machinery will look like?
> The big change required outside the patches on my first email is that any
> use of a target intrinsic will need to be #ifdef’d. I haven’t tracked all
> of those down yet.
That's a little gross. I wonder if there's a better abstraction for this -
I think the "check if a preprocessor define" is valid would be painful for
maintenance and testing.
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev