----- Original Message -----
> From: "Alexey Bataev" <[email protected]>
> To: "Richard Smith" <[email protected]>
> Cc: "cfe commits" <[email protected]>, "aaron ballman" 
> <[email protected]>, "Michael Spencer"
> <[email protected]>, 
> [email protected], "Hal Finkel" 
> <[email protected]>
> Sent: Tuesday, September 30, 2014 5:03:00 AM
> Subject: Re: [PATCH] align_value attribute in Clang
> 
> Hi Richard,
> your guess is correct, it is applied to the outer pointer.

Okay, in that case if we keep it out of the type system, then I suppose the 
current patch is essentially okay. The optimizer will deduce the alignment 
information when it can (especially after inlining), but if it is not a 
separate type, then we actually can't have it follow template deduction 
otherwise because it can't affect the mangling. Sound right?

 -Hal

> 
> Best regards,
> Alexey Bataev
> =============
> Software Engineer
> Intel Compiler Team
> 
> 30.09.2014 4:50, Richard Smith пишет:
> > On Mon, Sep 29, 2014 at 11:36 AM, Hal Finkel <[email protected]
> > <mailto:[email protected]>> wrote:
> >
> >     Hi Richard,
> >
> >     What does all of this suggest to you about the right design?
> >
> >
> > One more question. Given:
> >
> >   typedef int * __attribute__((align_value(32))) *Y;
> >
> > ... does the attribute apply to the outer pointer or the inner
> > pointer? (My guess: it surprisingly applies to the outer pointer.)
> > If
> > that's the case, then I think align_value should live entirely
> > outside
> > the type system, in the same way that __attribute__((aligned))
> > does.
> > Note that, given:
> >
> >   typedef int __attribute__((aligned(64))) *p
> >   __attribute__((aligned(8)))
> >
> > p is a 64-byte-aligned pointer to int, not an 8-byte-aligned
> > pointer
> > to a 64-byte-aligned int.
> >
> > If that's the case, I suggest you model it exactly like AlignedAttr
> > --
> > as an attribute on the TypedefDecl -- and look for it explicitly in
> > the cases where you want to use it by walking the type sugar and
> > looking for a TypedefDecl.
> >
> >     FWIW, maybe creating some kind of synthetic typedef type for
> >     the
> >     return value from DeduceTemplateArgumentsByTypeMatch would
> >     work?
> >
> >     Thanks again,
> >     Hal
> >
> >     ----- Original Message -----
> >     > From: "Alexey Bataev" <[email protected]
> >     <mailto:[email protected]>>
> >     > To: "Hal Finkel" <[email protected] <mailto:[email protected]>>,
> >     [email protected]
> >     <mailto:reviews%2bd4635%2bpublic%[email protected]>
> >     > Cc: [email protected] <mailto:[email protected]>,
> >     "aaron ballman" <[email protected]
> >     <mailto:[email protected]>>, [email protected]
> >     <mailto:[email protected]>, [email protected]
> >     <mailto:[email protected]>
> >     > Sent: Friday, September 26, 2014 12:26:29 AM
> >     > Subject: Re: [PATCH] align_value attribute in Clang
> >     >
> >     > 1. ICC does not create a new type for type with this
> >     > attribute. All
> >     > types are still the same.
> >     > 2.
> >     >
> >     > int n __attribute__((aligned(32)));
> >     > decltype(&n) - int*.
> >     >
> >     >
> >     > Best regards,
> >     > Alexey Bataev
> >     > =============
> >     > Software Engineer
> >     > Intel Compiler Team
> >     >
> >     > 26.09.2014 4:28, Hal Finkel пишет:
> >     > > ----- Original Message -----
> >     > >> From: "Richard Smith" <[email protected]
> >     <mailto:[email protected]>>
> >     > >> To: [email protected] <mailto:[email protected]>, "aaron
> >     > >> ballman"
> >     <[email protected] <mailto:[email protected]>>,
> >     > >> [email protected] <mailto:[email protected]>,
> >     [email protected] <mailto:[email protected]>, "a
> >     > >> bataev" <[email protected]
> >     > >> <mailto:[email protected]>>
> >     > >> Cc: [email protected]
> >     > >> <mailto:[email protected]>
> >     > >> Sent: Thursday, September 25, 2014 7:06:33 PM
> >     > >> Subject: Re: [PATCH] align_value attribute in Clang
> >     > >>
> >     > >> I'd like some more information about how ICC treats this
> >     > >> attribute.
> >     > >> Does it produce a new type? For instance:
> >     > > I did a quick experiment with icc (ICC) 14.0.1 20131008
> >     > > (with
> >     -Wall
> >     > > -O3 -pedantic):
> >     > >
> >     > >>    typedef int *I32 __attribute__((align_value(32)));
> >     > >>    typedef int *I64 __attribute__((align_value(64)));
> >     > >>
> >     > >>    typedef I32 X; typedef I64 X; // ill-formed?
> >     > > No diagnostic.
> >     > >
> >     > >>    template<typename> struct Y;
> >     > >>    typedef Y<I32> Z; typedef Y<I64> Z; // ill-formed?
> >     > > No diagnostic.
> >     > >
> >     > >>    extern I32 i32;
> >     > >>    I64 i64 = i32; // ill-formed? Is an explicit cast
> >     > >>    required?
> >     > > No diagnostic.
> >     > >
> >     > >>    I32 i32 = i64; // ill-formed? Is there an implicit
> >     > >>    conversion
> >     > >>    that
> >     > >>    discards alignment?
> >     > > No diagnostic.
> >     > >
> >     > > Alexey, can you please comment on the specifics?
> >     > >
> >     > >   -Hal
> >     > >
> >     > >> ... and if there's an implicit conversion that discards
> >     alignment,
> >     > >> what is its conversion rank?
> >     > >>
> >     > >> If I have:
> >     > >>
> >     > >>    int n __attribute__((aligned(32)));
> >     > >>
> >     > >> ... then what is `decltype(&n)`? Is it `int*`, or `int*
> >     > >> __attribute__((align_value(32)))`?
> >     > >>
> >     > >> http://reviews.llvm.org/D4635
> >     > >>
> >     > >>
> >     > >>
> >     >
> >     >
> >
> >     --
> >     Hal Finkel
> >     Assistant Computational Scientist
> >     Leadership Computing Facility
> >     Argonne National Laboratory
> >
> >
> 
> 

-- 
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

Reply via email to