[LLVMdev] [RFC] Stripping unusable intrinsics

Eric Christopher 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:
>
>> llvm-dev,
>>
>> 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
>> review).
>>
>> 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.

-eric


> -Chris
>
>
> -eric
>
>
>> -Chris
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141211/9f1a4212/attachment.html>


More information about the llvm-dev mailing list