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