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