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