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