All these are valid to me. I have another question for Zqing. Why does
Align_aggregate=8 work? What is changed?
Sun

2011/8/25 Stephen Clarke <stephen.cla...@st.com>:
> I really don't have strong opinions on this issue, but it is
> something that I have needed to think about from time to
> time for our target, so I can at least give my thoughts.
> Disclaimer: this is just based on working with the code and
> documentation, I don't have any particular insights, and I may
> well misinterpret something.
>
> My understanding of the align information in the ty_idx
> is that it is, initially, a "summary" of the required alignment,
> given the alignment requirements of the ABI, the type,
> and the decl (including any gnu attributes).  For the
> output of the frontend, this is the "intended alignment".
>
> After the frontend, an optimization phase should be allowed
> to change the alignment of objects, for code improvement
> purposes, where such a change is legal. (By "legal" I mean,
> it doesn't break the language semantics, or the ABI.)
> And in the implementation this is done by rewriting the align
> information in the ty_idx.
>
> But now it's necessary to support a gcc attribute which forbids
> optimizing the alignment of an object.  It's a new
> "language semantics" rule that the alignment optimizer needs
> to follow.  Somehow, the alignment optimizer needs to know
> when this rule applies to an object.
>
> What I don't have a very strong idea of, is how to consider
> the Aggregate_Alignment variable, which is treated by
> Adjusted_Alignment().  I think of it as an optimization, i.e.
> it doesn't change language or ABI rules, so Adjusted_Alignment()
> is just like an optimization phase performing an alignment
> optimization.
>
> Rgds,
> Steve.
>
> Sun Chan wrote:
>> you are always welcome to give opinion, why not!
>> I am forgetting a lot of the details, why can't the bit in ty_idx to
>> specify the "intended" alignment? If one can specify a larger
>> alignment, the reverse is possible too, right? When we did the
>> alignment bit, I don't believe we were thinking of just increasing
>> alignment.
>> Sun
>>
>> 2011/8/25 Stephen Clarke <stephen.cla...@st.com>:
>>> Ok.  I deliberately avoided giving an opinion on where
>>> the "user aligned" information should be stored.
>>>
>>> But I can think of three possibilities:
>>> 1.  A flag in the ST (i.e. the proposal).
>>> 2.  A bit in the TY_IDX (the same place as the align).
>>> 3.  A flag in the TY.
>>>
>>> For #2, there is some issue that it is a fixed 32-bit
>>> entity, and there are no free bits.  So a bit needs to be stolen,
>>> either from the (currently 24-bit) index into the type table,
>>> or else from the (currently 5-bit) alignment value.
>>> I worry about stealing a bit from the alignment, leaving only
>>> 4 bits, so I suppose it would have to come from the index field.
>>>
>>> Rgds,
>>> Steve.
>>>
>>> Sun Chan wrote:
>>>> I am not disputing that. I am objecting to two ways (and in diff
>>>> places) to handle that
>>>>
>>>> 2011/8/25 Stephen Clarke <stephen.cla...@st.com>:
>>>>> Gcc behaviour for attribute aligned has changed a little in the
>>>>> last few years.  Previously it used to state:
>>>>>
>>>>> "The `aligned' attribute can only increase the alignment; but you
>>>>> can decrease it by specifying `packed' as well."
>>>>>
>>>>> and so it used to be okay for Adjust_Alignment to always
>>>>> increase the alignment.
>>>>>
>>>>> But in most gcc recent versions, it allows for attribute aligned
>>>>> to decrease alignment also, and so to match gcc behaviour,
>>>>> Adjust_Alignment ought not to increase the alignment in that case.
>>>>> So there needs to be some way to detect the case.  The proposal is
>>>>> to handle that by adding a boolean flag indicating that the
>>>>> alignment was user-specified.
>>>>>
>>>>> (Ok, I'm just repeating what Jian-Xin Lai has already said... but
>>>>> with some explanation for why there used not to be a problem here.)
>>>>>
>>>>> Rgds,
>>>>> Steve.
>>>>>
>>>>> Sun Chan wrote:
>>>>>> the point is, I don't think you need two places to store alignment
>>>>>> info, user specified or not
>>>>>> Sun
>>>>>>
>>>>>> 2011/8/25 Jian-Xin Lai <laij...@gmail.com>:
>>>>>>> No, there is no case with 2 different alignment. ST's alignment is 
>>>>>>> saved in
>>>>>>> ST's TY_IDX, not in the TY. The front end will set the correct 
>>>>>>> alignment for
>>>>>>> the ST for all cases. TY only keeps the size of the type. TY doen't 
>>>>>>> have the
>>>>>>> alignment size.
>>>>>>>
>>>>>>> 在 2011年8月25日 下午4:19,Sun Chan <sun.c...@gmail.com>写道:
>>>>>>>> it's not a question. I am saying, symbol of different alignment should
>>>>>>>> have different type. Hence, the alignment is associated at type table,
>>>>>>>> not symtab
>>>>>>>> Sim
>>>>>>>>
>>>>>>>> 2011/8/25 Jian-Xin Lai <laij...@gmail.com>:
>>>>>>>>> I'm not sure if I understand your question. The TY_IDX is composed by 
>>>>>>>>> 2
>>>>>>>>> parts: index to TY_TABLE and extra flags for volatile, restrict and
>>>>>>>>> alignment. Every symbol with the same TY has its own alignment embeded
>>>>>>>>> in
>>>>>>>>> the TY_IDX.
>>>>>>>>>
>>>>>>>>> 在 2011年8月25日 下午4:01,Sun Chan <sun.c...@gmail.com>写道:
>>>>>>>>>> I have problem having one attribute that have annotation in 2
>>>>>>>>>> different places. Also, the reason it is in TYPE is that symbols of
>>>>>>>>>> the same declaration but of different alignment should really be of
>>>>>>>>>> different type.
>>>>>>>>>> Sun
>>>>>>>>>>
>>>>>>>>>> 2011/8/25 Jian-Xin Lai <laij...@gmail.com>:
>>>>>>>>>>> The TY has "packed" flag and it's detected in Adjust_Alignment:
>>>>>>>>>>>     125     align=      TY_align(ty_idx);
>>>>>>>>>>>     126
>>>>>>>>>>>     127     if (Is_Structure_Type(ty) && TY_is_packed(ty))
>>>>>>>>>>>     128     {
>>>>>>>>>>>     129       return align;
>>>>>>>>>>>     130     }
>>>>>>>>>>>
>>>>>>>>>>> If the TY is packed, the BE don't change its alignment. We did the
>>>>>>>>>>> similar
>>>>>>>>>>> thing. The different is our change is applied on ST instead of TY
>>>>>>>>>>> because
>>>>>>>>>>> this is a GNU extension on variable.
>>>>>>>>>>>
>>>>>>>>>>> 在 2011年8月25日 下午3:05,Sun Chan <sun.c...@gmail.com>写道:
>>>>>>>>>>>> How would you classify "pack" data?
>>>>>>>>>>>> Sun
>>>>>>>>>>>>
>>>>>>>>>>>> 2011/8/25 Jian-Xin Lai <laij...@gmail.com>:
>>>>>>>>>>>>> The reason we introduce the "user align" is to separate this kind
>>>>>>>>>>>>> of
>>>>>>>>>>>>> case
>>>>>>>>>>>>> from the generic aggregate. So that we can do the two things well:
>>>>>>>>>>>>> If user specifies an alignment, we follow the size. Otherwise, the
>>>>>>>>>>>>> compiler
>>>>>>>>>>>>> can decide what's the proper alignment.
>>>>>>>>>>>>>
>>>>>>>>>>>>> 在 2011年8月25日 下午1:57,Mike Murphy <mmur...@nvidia.com>写道:
>>>>>>>>>>>>>> So Aggregate_Alignment is a settable option (defaults to 16 in
>>>>>>>>>>>>>> some
>>>>>>>>>>>>>> targets).  What if you compile with -TENV:align_aggregates=8, or
>>>>>>>>>>>>>> don't
>>>>>>>>>>>>>> default it to 16?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>> From: 朱庆 [mailto:zqing1...@gmail.com]
>>>>>>>>>>>>>> Sent: Wednesday, August 24, 2011 10:53 PM
>>>>>>>>>>>>>> To: Mike Murphy
>>>>>>>>>>>>>> Cc: Sun Chan; open64-devel@lists.sourceforge.net
>>>>>>>>>>>>>> Subject: Re: [Open64-devel] Code Review request for bug832[wgen]
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> The alignment is correct in .B file, but in Adjusted_Alignment
>>>>>>>>>>>>>> there
>>>>>>>>>>>>>> are following code to modify the align.  In our case we do not
>>>>>>>>>>>>>> want
>>>>>>>>>>>>>> this happen.
>>>>>>>>>>>>>>        else {
>>>>>>>>>>>>>>                align = MAX(align, Aggregate_Alignment);
>>>>>>>>>>>>>>        }
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Best wishes
>>>>>>>>>>>>>> zhuqing
>>>>>>>>>>>>>> 在 2011年8月25日 下午12:28,Mike Murphy <mmur...@nvidia.com> 写道:
>>>>>>>>>>>>>>> The alignment is stored in the ty_idx (see TY_align), and then
>>>>>>>>>>>>>>> there
>>>>>>>>>>>>>>> are
>>>>>>>>>>>>>>> routines like Adjusted_Alignment in stblock that can modify it.
>>>>>>>>>>>>>>>  I
>>>>>>>>>>>>>>> suspect
>>>>>>>>>>>>>>> the problem here is that the alignment is being put on the
>>>>>>>>>>>>>>> object
>>>>>>>>>>>>>>> rather
>>>>>>>>>>>>>>> than the type, and then is lost (but should still be possible,
>>>>>>>>>>>>>>> because the
>>>>>>>>>>>>>>> TY_align is like qualifiers that can vary from the base type).
>>>>>>>>>>>>>>>  Does
>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>> alignment show up properly in the intermediate .B file?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>>>> From: Sun Chan [mailto:sun.c...@gmail.com]
>>>>>>>>>>>>>>> Sent: Wednesday, August 24, 2011 7:51 PM
>>>>>>>>>>>>>>> To: 朱庆
>>>>>>>>>>>>>>> Cc: open64-devel@lists.sourceforge.net
>>>>>>>>>>>>>>> Subject: Re: [Open64-devel] Code Review request for
>>>>>>>>>>>>>>> bug832[wgen]
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> The reason I asked for the file is that I think there has to be
>>>>>>>>>>>>>>> some
>>>>>>>>>>>>>>> alignment attribute somewhere. I am sure data alignment has
>>>>>>>>>>>>>>> been
>>>>>>>>>>>>>>> dealt
>>>>>>>>>>>>>>> with in the compiler. That it is due to user, or just language
>>>>>>>>>>>>>>> attribute might be irrelevant from compiler point of view.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Mike or Murthy,
>>>>>>>>>>>>>>> Do you remember where alignment is handled? I only found
>>>>>>>>>>>>>>> Alignment
>>>>>>>>>>>>>>> field in BLK of the symtab_defs.h
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Sun
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2011/8/25 朱庆 <zqing1...@gmail.com>:
>>>>>>>>>>>>>>>> Hi Sun,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Attached symtab_defs.h.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>>>>> zhuqing
>>>>>>>>>>>>>>>> 2011/8/24 Sun Chan <sun.c...@gmail.com>:
>>>>>>>>>>>>>>>>> can you send me the full symtab_defs.h?
>>>>>>>>>>>>>>>>> Sun
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Wed, Aug 24, 2011 at 4:56 PM, 朱庆 <zqing1...@gmail.com>
>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Can gatekeeper help review following fix for bug832?
>>>>>>>>>>>>>>>>>> https://bugs.open64.net/show_bug.cgi?id=832
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> small case, a.c:
>>>>>>>>>>>>>>>>>> struct obs_kernel_param {
>>>>>>>>>>>>>>>>>>  const char *str;
>>>>>>>>>>>>>>>>>> };
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> const char str1[] = "acpi_parse_apic_instance=";
>>>>>>>>>>>>>>>>>> const char str2[] = "acpi_os_name";
>>>>>>>>>>>>>>>>>> struct obs_kernel_param var1
>>>>>>>>>>>>>>>>>>  __attribute__ ((aligned ((sizeof (long))))) =
>>>>>>>>>>>>>>>>>> {str1};
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> struct obs_kernel_param var2
>>>>>>>>>>>>>>>>>>  __attribute__ ((aligned ((sizeof (long))))) =
>>>>>>>>>>>>>>>>>> {str2};
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> when compile with opencc, nm a.o
>>>>>>>>>>>>>>>>>> 0000000000000000 D var1
>>>>>>>>>>>>>>>>>> 0000000000000010 D var2
>>>>>>>>>>>>>>>>>> compile with gcc, nm a.o
>>>>>>>>>>>>>>>>>> 0000000000000000 D var1
>>>>>>>>>>>>>>>>>> 0000000000000008 D var2
>>>>>>>>>>>>>>>>>> the offset of var1 and var2 are different, the problem with
>>>>>>>>>>>>>>>>>> opencc
>>>>>>>>>>>>>>>>>> is
>>>>>>>>>>>>>>>>>> :fixed align attribute does not work, this may cause some
>>>>>>>>>>>>>>>>>> problems
>>>>>>>>>>>>>>>>>> when mix link two files with opencc and gcc.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> The fix is to add a new ST flag to record
>>>>>>>>>>>>>>>>>> user_defined_align.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>>>>>>> zhuqing
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>>>>>>>>> EMC VNX: the world's simplest storage, starting under $10K
>>>>>>>>>>>>>>>>>> The only unified storage solution that offers unified
>>>>>>>>>>>>>>>>>> management
>>>>>>>>>>>>>>>>>> Up to 160% more powerful than alternatives and 25% more
>>>>>>>>>>>>>>>>>> efficient.
>>>>>>>>>>>>>>>>>> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
>>>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>>>> Open64-devel mailing list
>>>>>>>>>>>>>>>>>> Open64-devel@lists.sourceforge.net
>>>>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>>>>>> EMC VNX: the world's simplest storage, starting under $10K
>>>>>>>>>>>>>>> The only unified storage solution that offers unified
>>>>>>>>>>>>>>> management
>>>>>>>>>>>>>>> Up to 160% more powerful than alternatives and 25% more
>>>>>>>>>>>>>>> efficient.
>>>>>>>>>>>>>>> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>> Open64-devel mailing list
>>>>>>>>>>>>>>> Open64-devel@lists.sourceforge.net
>>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> -----------------------------------------------------------------------------------
>>>>>>>>>>>>>>> This email message is for the sole use of the intended
>>>>>>>>>>>>>>> recipient(s)
>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>> may contain
>>>>>>>>>>>>>>> confidential information.  Any unauthorized review, use,
>>>>>>>>>>>>>>> disclosure
>>>>>>>>>>>>>>> or
>>>>>>>>>>>>>>> distribution
>>>>>>>>>>>>>>> is prohibited.  If you are not the intended recipient, please
>>>>>>>>>>>>>>> contact
>>>>>>>>>>>>>>> the sender by
>>>>>>>>>>>>>>> reply email and destroy all copies of the original message.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> -----------------------------------------------------------------------------------
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>>>>> EMC VNX: the world's simplest storage, starting under $10K
>>>>>>>>>>>>>> The only unified storage solution that offers unified management
>>>>>>>>>>>>>> Up to 160% more powerful than alternatives and 25% more
>>>>>>>>>>>>>> efficient.
>>>>>>>>>>>>>> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> Open64-devel mailing list
>>>>>>>>>>>>>> Open64-devel@lists.sourceforge.net
>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>> Lai Jian-Xin
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>>>> EMC VNX: the world's simplest storage, starting under $10K
>>>>>>>>>>>>> The only unified storage solution that offers unified management
>>>>>>>>>>>>> Up to 160% more powerful than alternatives and 25% more efficient.
>>>>>>>>>>>>> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Open64-devel mailing list
>>>>>>>>>>>>> Open64-devel@lists.sourceforge.net
>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Regards,
>>>>>>>>>>> Lai Jian-Xin
>>>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Regards,
>>>>>>>>> Lai Jian-Xin
>>>>>>>>>
>>>>>>> --
>>>>>>> Regards,
>>>>>>> Lai Jian-Xin
>>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> EMC VNX: the world's simplest storage, starting under $10K
>>>>>> The only unified storage solution that offers unified management
>>>>>> Up to 160% more powerful than alternatives and 25% more efficient.
>>>>>> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
>>>>>> _______________________________________________
>>>>>> Open64-devel mailing list
>>>>>> Open64-devel@lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/open64-devel
>>>
>
>

------------------------------------------------------------------------------
EMC VNX: the world's simplest storage, starting under $10K
The only unified storage solution that offers unified management 
Up to 160% more powerful than alternatives and 25% more efficient. 
Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel

Reply via email to