[LLVMdev] [RFC] Overhauling Attributes

Chandler Carruth chandlerc at google.com
Wed Sep 19 16:09:21 PDT 2012


I love it in principle. As you get closer to finalizing the syntax, etc. I
might have some more detailed comments, but nothing really substantive.

Minor API comment as that seems more immediate:

On Wed, Sep 19, 2012 at 3:25 PM, Bill Wendling <wendling at apple.com> wrote:

> An example syntax could be:
>
> // Building an Attribute
>
> Attributes A;
> A.addAlignAttr(4)
>  .addNoUnwindAttr()
>  .addStackProtectorAttr()
>  .addUnwindTableAttr()
>  .addReadNoneAttr();
>

Personally, I would prefer to make the Attributes class be immutable, and
the building happen in a helper. One possible interface would end up
looking like:

Attributes Base = ...;

Attributes A = Attributes::Builder(Base).addNoUnwind()
                                        .addStackProtector()
                                        .addAlign(4);



>
> // Querying an Attribute
>
> if (!A.hasStackProtector() || A.hasAlign(4))
>    ...
>
> The Attributes class will be expanded in the future to support code
> generation
> and target-specific options. But it won't require a massive rewrite of the
> compiler to do so.
>
> The bit-wise operations on the Attributes class will need to be removed.
> This is
> because the internals of the Attributes class may no longer be a bitfield.
>
> Summary
> =======
>
> The Attributes class is going to change in some seriously fundamental
> ways, but
> it will result in a much more extensible and flexible class. The changes
> to the
> code base will be mostly mechanical in nature. The transition is easily
> serialized, so any problems can be caught early on.
>
> _______________________________________________
> 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/20120919/50378706/attachment.html>


More information about the llvm-dev mailing list