Hi Hal,
I'm not sure is it a proper solution, but I would try just to propagate this attribute on auto type deduction. Adding a new type will take a lot of time, though it is more perspective in terms of future extension for the new similar attributes.

Best regards,
Alexey Bataev
=============
Software Engineer
Intel Compiler Team

18.09.2014 3:25, Hal Finkel пишет:
----- Original Message -----
From: "Hal Finkel" <[email protected]>
To: [email protected]
Cc: "a bataev" <[email protected]>, "nurmukhametov alex" 
<[email protected]>, "aaron ballman"
<[email protected]>, [email protected], [email protected]
Sent: Monday, September 8, 2014 6:59:07 PM
Subject: Re: [PATCH] align_value attribute in Clang

----- Original Message -----
From: [email protected]
To: [email protected], "aaron ballman" <[email protected]>,
[email protected], [email protected], "a
bataev" <[email protected]>
Cc: [email protected], "nurmukhametov alex"
<[email protected]>
Sent: Monday, September 8, 2014 6:38:44 PM
Subject: Re: [PATCH] align_value attribute in Clang

Rebased, and removed from inappropriate
isTypeDependent/isValueDependent checks (inappropriate here for the
same reason they were inappropriate in patch D4601 for the
assume_aligned attribute).

Work still needs to be done to allow use as a type attribute (so
that
the attribute follows type deduction, auto, etc.). I'll send a
follow-up e-mail about this with questions.
Pinging re: the design question below.

Thanks again,
Hal

I need this attribute to follow type deduction (auto, etc.), and as
we've discussed, just making this a declaration attribute does not
seem to do this. It seems to me that what I need to do, or at least
might do, is hook align_value into AttributedType, and handle it in
lib/Sema/SemaType.cpp. First, it is not clear where I should store
the alignment parameter:
   - address_space stores its value in the type qualifiers
   - reg_parm stores its value as part of FunctionType
   - vector_type / ext_vector_type are their own Type subclasses
   (where ExtVectorType is a subclass of VectorType, but there is
   also DependentSizedExtVectorType which handles dependent
   attributes).

Given that align_value also needs to handle dependent alignment
values, that seems most like the
ExtVectorType/DependentSizedExtVectorType setup. I could create
AlignValuePointerType/DependentAlignValuePointerType (or similar),
maybe with AlignValuePointerType being a subclass of PointerType?
(or maybe both being subclasses of PointerType?)

That having been said, creating subclasses of PointerType and/or new
Type subclasses seems like an unfortunate amount of infrastructure
for this feature. An alternative would be to place extra data
directly into PointerType, but I don't like that idea because it
adds memory (and some runtime) overhead to the common case with no
corresponding benefit.

Ideally, I'd be able to use the original AlignValueAttr nodes,
perhaps in combination with AttributedType somehow to indicate that
a relevant AlignValueAttr node exists somewhere. Is there a way to
do this?

In short, I'm not sure what the best way of doing this is, and I'm
looking for advice.

Thanks again,
Hal

http://reviews.llvm.org/D4635

Files:
   include/clang/Basic/Attr.td
   include/clang/Basic/AttrDocs.td
   include/clang/Basic/DiagnosticSemaKinds.td
   include/clang/Sema/AttributeList.h
   include/clang/Sema/Sema.h
   lib/CodeGen/CGCall.cpp
   lib/Sema/SemaDeclAttr.cpp
   lib/Sema/SemaTemplateInstantiateDecl.cpp
   test/CodeGen/align_value.cpp
   test/Sema/align_value.c
   test/SemaCXX/align_value.cpp

--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to